Операционная система Microsoft Windows 3.1 для программиста -том 1


Функция окна - часть 3


Рис. 1.13. Диалоговое окно с сообщением

Аналогично сообщение WM_RBUTTONDOWN попадает в функцию окна, когда вы устанавливаете курсор мыши в окно приложения и нажимаете правую клавишу мыши. В этом случае функция окна вызывает функцию MessageBeep с параметром -1 и затем функцию MessageBox для вывода сообщения о том, что была нажата правая клавиша мыши.

Приведем прототип функции MessageBeep:

void WINAPI MessageBeep(UINT uAlert);

Параметр функции MessageBeep позволяет выбрать один из нескольких системных звуковых сигналов:

Параметр Описание
-1 Проигрывание стандартного звукового сигнала с помощью громкоговорителя, установленного в корпусе компьютера
MB_ICONASTERISK Воспроизведение звука, указанного в строке SystemAsterisk раздела [sounds] файла win.ini
MB_ICONEXCLAMATION Воспроизведение звука, указанного в строке SystemExclamation раздела [sounds] файла win.ini
MB_ICONHAND Воспроизведение звука, указанного в строке SystemHand раздела [sounds] файла win.ini
MB_ICONQUESTION Воспроизведение звука, указанного в строке SystemQuestion раздела [sounds] файла win.ini
MB_OK (значение этой константы равно 0) Воспроизведение звука, указанного в строке SystemDefault раздела [sounds] файла win.ini

Функцию MessageBeep удобно использовать для отладки, задавая ей в качестве параметра значение -1.

При завершении работы приложения функции окна передается сообщение WM_DESTROY, в ответ на которое функция окна помещает в очередь приложения сообщение WM_QUIT, вызывая функцию PostQuitMessage. При выборке сообщения WM_QUIT завершается цикл обработки сообщений и работа приложения.

Все остальные сообщения передаются без изменения функции DefWindowProc для дальнейшей обработки.

Обратим ваше внимание на тот факт, что в ответ на сообщение WM_DESTROY приложение помещает в свою собственную очередь сообщение WM_QUIT. При этом получается, что одно сообщение, появившееся в очереди сообщений, порождает другое. Такая практика широко используется приложениями Windows.Через функцию окна вашего простейшего приложения проходят многочисленные сообщения, некоторые из которых порождают новые сообщения после того, как достигают функции DefWindowProc.

Весь этот поток сообщений незаметен для вашего приложения, однако оно может перехватить любое сообщение и обработать его самостоятельно. В этом заключается сила механизма обработки сообщения. Фактически приложение может подменить частично или полностью любой метод, используемый Windows для реализации той или иной операции с окном или приложением.




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



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