Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 21


Из очереди приложений сообщение выбирается с помощью функции GetMessageQ. Первый аргумент этой функции - указатель на структуру типа MSG, в которую будет записана информация о сообщении. Второй -хэндл окна, созданного программой. Сообщения, адресованные только этому окну, будут выбираться функцией GetMessageQ и передаваться оконной функции. Если вы хотите, чтобы обрабатывались сообщения для всех созданных программой окон, установите этот параметр равным NULL.

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

Функция GetMessage() всегда, за исключением одного случая, воз­вращает непулевое значение. Исключение в данном случае очевидно -при получении этого единственного сообщения работа цикла, а следова­тельно, и программы, прекращается. Это сообщение называется WM QUIT и приводит к нормальному завершению программы. Но давайте пока оставим WM__QUIT в покое и посмотрим, что происходит внутри цикла при получении им нормального - не WM_QUIT - сообщения.

Давайте на время представим себе, что для унификации процесса об­работки сообщений некоторые из них необходимо преобразовать в более удобный для обработки вид. Эти преобразования выполняет функция TranslateMessage(). К этой функции мы еще вернемся при изучении системы обработки ввода с клавиатуры.

После преобразования сообщение готово к обработке. Функция DispatchMessageQ передает сообщение на обработку в оконную процедуру.

ВСЕ! Мы сформировали структуру типа WNDCLASS, зарегистриро­вали класс окна и создали экземпляр окна этого класса. Мы выдали окно на отображение, после чего запустили цикл обработки сообщений и предусмотрели условие, при котором работа цикла закончится. Теперь все зависит от того, как сообщения будут обрабатываться оконной про-

24

цедурой. Функция WinMain (), если, конечно, не считать работающего цикла обработки сообщений, на этом свою задачу выполнила.




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



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