Глава 30. WinSight и WinSpector________________________________857
от "макулатуры". Иногда оказывается, что большая часть почты — купоны, рекламные буклеты, каталоги ненужных нам вещей. Также и Windows отправляет приложению сообщения по каждому случившемуся пустяку вроде движения мыши по экрану или изменению пользователем системных цветов. Большинство этих сообщений нас не интересуют.
Разбор пачки входящей корреспонденции — это то, что делает функция GetMessage (). Пересылка сообщений — процесс помещения ее в нашу пачку для изучения. Функция DispatchMessageO передает информацию из сообщения в функцию окна, где "макулатура" отделяется от того, что нам интересно. Обычно функция окна содержит оператор switch с обширным списком сообщений, на которые мы хотим отреагировать какими-то программными действиями. Основа программирования для Windows — это реакция на эти сообщения. Вместо вызова специальных функций, управляющих работой компьютера, программист должен просто ждать, пока не произойдут определенные события, и тогда реагировать на них.
%
Просмотр очереди сообщений
Приложение может просмотреть очередь сообщений, не опустошая ее, как
ЭТО делает ФУНКЦИЯ GetMessage (). ФУНКЦИЯ PeekMessage () Позволяет ПрИЛО-
жению искать в своей очереди определенные сообщения без изъятия их из очереди. Если сообщение, которое ищет функция PeekMessage о, находится в очереди, она возвращает ненулевое значение и позволяет приложению извлечь и обработать сообщение, минуя главный цикл обработки сообщений.
В приложениях функция PeekMessage () обычно используется для периодиче-ской проверки поступления некоторого сообщения, когда приложение выполняет операцию, не отдавая управление в течение продолжительного времени (например, ввод или вывод). Например, если приложение выполняет повторяющуюся операцию, которую следует завершить по сообщению от пользователя, оно может использовать функцию PeekMessage о, чтобы проверить, не поступило ли в очередь сообщение о завершении.
Функция GetMessage () действует подобно вашему другу, вынимающему почту из ящика, а функция PeekMessage () — как если бы он открыл почтовый ящик, чтобы посмотреть, не пришло ли некоторое определенное письмо, не вынимая при этом всей почты.
Отправка сообщений
ФУНКЦИИ Windows' API SendMessage () И PostMessage () ДВЮТ ВОЗМОЖНОСТЬ
отправлять сообщения окну текущего приложения, а также окнам других приложений. Функция SendMessage() указывает системе Windows, что сообщение следует передать прямо в процедуру окна, минуя очередь сообщений приложения. Управление не возвращается вызвавшей программе до тех пор,