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


Листинг 4.7. Файл hlpmore/hlpmore.cpp - часть 4


// Рисуем рамку по периметру битового изображения Rectangle(hdc, rc.left, rc.top, rc.right, rc.bottom);

// Рисуем время в центре битового изображения DrawText(hdc, (LPSTR)szBuf, lstrlen(szBuf), &rc, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_SINGLELINE);

// Выбираем старое битовое изображение hbmp = (HBITMAP)SelectObject(hdc, hbmpOld); DeleteDC(hdc);

// Возвращаем идентификатор созданного // битового изображения lPtr = (long)hbmp;

break; } }

return lPtr; }

// Обрабатываем сообщение от левой клавиши мыши case WM_LBUTTONDOWN: { if(IDYES == MessageBox(hwnd, "Запустить clock.exe?", "Help Sample", MB_YESNO | MB_ICONQUESTION)) WinExec("clock.exe", SW_SHOW);

#define IDN_CLOCK 200

// Во временном окне отображаем раздел справочной // системы с номером контекста, равным IDN_CLOCK WinHelp(hwnd, "hlpmore.hlp", HELP_CONTEXTPOPUP, (DWORD)IDN_CLOCK);

return 0; }

// При удалении встроенного окна уничтожаем таймер case WM_DESTROY: { KillTimer(hwnd, CLOCK_TIMER); return 0; }

default: break; } return DefWindowProc(hwnd, msg, wParam, lParam); }

Функция WinMain получает управление при загрузке DLL-библиотеки в память. Ее основная задача - регистрация класса встроенного окна, для чего вызывается функция RegisterEWclass, определенная в этой же библиотеке.

Функция RegisterEWclass выполняет обычную процедуру регистрации класса, однако при регистрации используется стиль CS_GLOBALCLASS. Класс, зарегистрированный с этим стилем, доступен для использования всеми запущенными приложениями - это глобальный класс.

Далее в исходном тексте DLL-библиотеки определена функция MsgBox, которая не имеет никакого отношения к встроенным окнам и используется как дополнительная макрокоманда, вызываемая при помощи ссылки из раздела оглавления. Задача функции MsgBox заключается в отображении сообщения, полученного ей через второй параметр.

Функция EWWndProc выполняет роль функции встроенного окна. Она обрабатывает все сообщения, поступающие от приложения winhelp.exe при создании, в процессе работы и при удалении встроенного окна.




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



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