Нижеследующий пример показывает структуру обычной оконной процедуры. Оконная процедура использует параметр сообщения в операторе
switch с отдельными сообщениями, управляемыми отдельными операторами выбора case.| Обратите внимание! на то, что каждый оператор case возвращает конкретное значение для каждого сообщения. Для сообщений, которые он не обрабатывает, оконная процедура вызывает функцию DefWindowProc . |
Демонстрационный пример
LRESULT CALLBACK MainWndProc(// дескриптор окна UINT uMsg, // код сообщенияWPARAM wParam, // первый параметр сообщенияLPARAM lParam) // второй параметр сообщения{ // Инициализация окна.
// Прорисовка рабочей области окна.
// Установка размера и позиции окна.
// Очистка определяемых окном объектов данных
// // Обработка других сообщений. //
}
|
Сообщение WM_NCCREATE
посылается сразу после того, как ваше окно создано, но если приложение отвечает этому сообщению, возвращая значение ЛОЖЬ (FALSE), функция CreateWindowEx завершается ошибкой. Сообщение WM_CREATE отправляется после того, как ваше окна уже создано.Сообщение WM_DESTROY посылается тогда, когда ваше окно собирается быть разрушенным. Функция
DestroyWindow заботится о разрушении любых дочерних окон разрушаемого окна. Сообщение WM_NCDESTROY отправляется перед самым разрушением окна.По крайней мере, оконная процедура должна обработать сообщение WM_PAINT, чтобы рисовать себя. Как правило, с таким же успехом она должна обрабатывать сообщения от мыши и клавиатуры. Чтобы установить, должна ли ваша оконная процедура их обрабатывать, справляйтесь с описаниями отдельных сообщений.
Ваша прикладная программа может вызывать функцию
DefWindowProc как часть обработки сообщения. В этом случае, приложение может изменять параметры сообщения перед передачей его в DefWindowProc, или она может продолжить обработку по умолчанию после выполнения своих собственных операций.Процедура диалогового окна принимает сообщение WM_INITDIALOG вместо сообщения WM_CREATE и не передает необработанные сообщения функции
DefDlgProc. Иначе, процедура диалогового окна становится точно такой же, что и оконная процедура.