В следующем примере показана структура типичного окна процедуры. Оконная процедура использует аргумент message в оператор switch с отдельными сообщениями, обработаны операторов отдельный случай . Обратите внимание на то, что каждый случай Возвращает определенное значение для каждого сообщения. Для сообщений, которые не обрабатывает Оконная процедура вызывает функцию DefWindowProc.
LRESULT обратного ВЫЗОВА MainWndProc)
HWND hwnd, / / дескриптор окна
UINT uMsg, / / сообщение идентификатор
WPARAM wParam, / / сначала сообщение параметр
LPARAM lParam) / / второй параметр message
{переключатель (uMsg) {, дело WM_CREATE: / / инициализировать окна.
Возвращает 0;
дело WM_PAINT: / / рисовать клиентской области окна.
Возвращает 0;
дело WM_SIZE: / / установить размер и положение окна.
Возвращает 0;
дело WM_DESTROY: / / Очистка окна данных объектов.
Возвращает 0;
/ / / / Процесс других сообщений.
/ / по умолчанию: возвращение DefWindowProc (hwnd, uMsg, wParam, lParam);
} Возвращает 0;
}
Messageis WM_NCCREATE , только после того, как ваш окно создается, но если приложение отвечает на это сообщение, возвращая значение ложь, функция завершится неудачно CreateWindowEx . WM_CREATE сообщения после того, как ваше окно уже создан.
Сообщение WM_DESTROY отправляется когда уничтожить ваше окно. Функция DestroyWindow берет на себя уничтожить любые дочерние окна окна уничтожается. WM_NCDESTROY сообщение отправляется непосредственно перед удалением окно.
По крайней мере, необходимо оформить процедуру окна сообщение WM_PAINT для рисования самого себя. Как правило он должен обрабатывать клавиатуры и мыши сообщений. Консультироваться с описания отдельных сообщений, чтобы определить ли процедуре окна должен обрабатывать их.
Приложение может вызвать функцию DefWindowProc в процессе обработки сообщения. В этом случае приложение может изменять параметры сообщения перед передачей сообщения DefWindowProc, или она может продолжать обработку после выполнения своих собственных операций по умолчанию.
Процедуру диалогового окна получает сообщение WM_INITDIALOG вместо сообщений WM_CREATE и не передаются необработанных сообщений функции DefDlgProc . В противном случае процедуру диалогового окна является точно так же, как окно.