Разработка процедуры окна

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

Index