На этом шаге мы проанализируем созданный код.
AppWizard не только создает файлы, необходимые для построения справочной системы приложения, но и дополняет исходный код средствами поддержки контекстно-зависимой справки. В меню Help добавляется пункт Help Topics (ресурс ID_HELP_FINDER), на панель инструментов - кнопка Context Help (режим интерактивной справки, ресурс ID_CONTEXT_HELP), а в таблицу "быстрых" клавиш - записи, определяющие F1 в качестве клавиши контекстно-зависимой справки (ресурс ID_HELP) и SH1FT+F1 в качестве клавиш интерактивной справки.
Приведенный ниже код карты сообщений главного окна приложения связывает вышеперечисленные ресурсы с функциями-обработчиками базового класса.
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code ! ON_WM_CREATE() //}}AFX_MSG_MAP // Global help commands ON_COMMAND(ID_HELP_FINDER, CFrameWnd::OnHelpFinder) ON_COMMAND(ID_HELP, CFrameWnd::OnHelp) ON_COMMAND(ID_CONTEXT_HELP, CFrameWnd::OnContextHelp) ON_COMMAND(ID_DEFAULT_HELP, CFrameWnd::OnHelpFinder) END_MESSAGE_MAP()
Рис.1. Карта сообщений
Так или иначе все функции-обработчики вызывают функцию CWnd::WinHelp(), которая запускает приложение WinHelp. OnContextHelp() формирует из идентификатора ресурса идентификатор контекста справки, который передается в качестве параметра функции WinHelp(). Если создать корректный идентификатор контекста справа не удается, генерируется командное сообщение ID_DEFAULT_HELP.
На следующем шаге мы рассмотрим создание разделов справки.