Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Листинг 4.3. Файл hlpmore/helpmwh.cpp - часть 2


aWndClass = RegisterClass(&wc); return (aWndClass != 0); }

// ===================================== // Функция WndProc // ===================================== LRESULT CALLBACK _export WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { // Это сообщение поступает, если меню или модальная // диалоговая панель находится в состоянии ожидания case WM_ENTERIDLE: { // Пользователь выделил строку меню // Проверяем, была ли нажата клавиша <F1> if((wParam == MSGF_MENU) && ((GetKeyState(VK_F1) & 0x8000) != 0)) { // Если была нажата клавиша <F1>, устанавливаем // флаг bF1, а затем имитируем нажатие // клавиши <Enter> bF1 = TRUE; PostMessage(hwnd, WM_KEYDOWN, VK_RETURN, 0l); }

// Если клавиша <F1> была нажата во время отображения // диалоговой панели, вызываем раздел оглавления // справочной системы else if((wParam == MSGF_DIALOGBOX) && ((GetKeyState(VK_F1) & 0x8000) != 0)) { hwndDlg = (HWND)LOWORD(lParam); WinHelp(hwnd, "hlpmore.hlp", HELP_CONTENTS, 0L); } break; }

case WM_COMMAND: { switch (wParam) { // Отображаем раздел оглавления справочной системы case CM_HELPINDEX: { WinHelp(hwnd, "hlpmore.hlp", HELP_CONTENTS, 0L); return 0L; } case CM_HELPCOMMANDS: { // Если строка меню была выбрана клавишей <F1>, // выводим справочную информацию, в противном // случае выполняем команду if(bF1) { WinHelp(hwnd, "hlpmore.hlp", HELP_CONTENTS, 0L); bF1 = FALSE; } else WinHelp(hwnd, "hlpmore.hlp", HELP_CONTEXT, (DWORD)IDN_cmd); return 0L; }

case CM_HELPKEYBOARD: { if(bF1) { WinHelp(hwnd, "hlpmore.hlp", HELP_CONTENTS, 0L); bF1 = FALSE; } else WinHelp(hwnd, "hlpmore.hlp", HELP_CONTEXT, (DWORD)IDN_key); return 0L; }

case CM_HELPUSING_HELP: { if(bF1) { WinHelp(hwnd, "hlpmore.hlp", HELP_CONTENTS, 0L); bF1 = FALSE; } else WinHelp(hwnd, "hlpmore.hlp", HELP_HELPONHELP, 0L); return 0L; }

case CM_HELPABOUT: { if(bF1) { WinHelp(hwnd, "hlpmore.hlp", HELP_CONTENTS, 0L); bF1 = FALSE; } else { lpfnDlgProc = (DLGPROC)MakeProcInstance( (FARPROC)DlgProc, hInst); DialogBox(hInst, "ABOUT_DIALOG", hwnd, lpfnDlgProc); } return 0; }




Начало  Назад  Вперед



Книжный магазин