Нижеследующий пример показывает структуру обычной оконной процедуры. Оконная процедура использует параметр сообщения в операторе
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. Иначе, процедура диалогового окна становится точно такой же, что и оконная процедура.