VC Лекции PDF / VC 08 Лек Сообщения
.pdfVisual C++ |
Лекция 4 |
1 |
Л Е К Ц И Я 4
СООБЩЕНИЯ WINDOWS ________________________________________________________________ 1
СООБЩЕНИЯ WINDOWS
При запуске приложения Windows вызывает функцию WinMain() объекта приложения, поэтому наше знакомство с программой начнется именно с объекта приложения. С нашей точки зрения объект приложения должен выполнять три задачи: запустить программу, создать главное окно и организовать передачу сообщений Windows в главное окно и из него.
Что такое «сообщения Windows»? Это особые сигналы с минимальным объемом служебных данных, посредством которых различные объекты в среде Windows общаются между собой. Например, когда пользователь завершает работу программы, Windows посылает объекту приложения сообщение WM_QUIT. Если же пользователь изменяет размеры окна программы, она получает сообщение WM_SIZE. Наиболее интересные сообщения Windows перечислены в таблице.
Сообщение Windows |
Значение |
|
WM_ACTIVATE |
Окно становится активным или неактивным |
|
WM_ACTIVATEAPP |
Активизируемое окно принадлежит другому приложению |
|
WM_CANCELMODE |
Отмена системного режима |
|
WM_CHILDACTIVATE |
Активизируется дочернее окно |
|
WM_CLOSE |
Окно было закрыто |
|
WM_CREATE |
Была вызвана функция создания окна |
|
WM_DESTROY |
Была вызвана функция уничтожения окна |
|
WM_ENABLE |
Окно было заблокировано или разблокировано WM_ENDSESSION |
|
WM_ENDSESSION |
Сеанс работы завершается |
|
WM_ENTERIDLE |
Начало пассивного цикла, которым можно воспользоваться для нужд |
|
программы |
||
|
||
WM_ERASEBKGND |
Необходимо стереть фон окна |
|
WM_GETMINMAXINFO |
Получение информации о размерах окна |
|
WM_GETTEXT |
Получение текста, связанного с окном |
|
WM_GETTEXTLENGTH |
Получение длины текста, связанного с окном |
|
WM_ICONERASEBKGND |
Необходимо стереть фон окна |
|
WM_KILLFOCUS |
Окно теряет фокус ввода |
|
WM_MENUCHAR |
Пользователь нажал клавишу, не используемую в текущем меню |
|
WM_MENUSELECT |
Выбрана команда меню |
|
WM_MOVE |
Окно переместилось |
|
WM_PAINT |
Перерисовать часть окна |
|
WM_PAINTICON |
Перерисовать часть значка приложения |
|
WM_PARENTNOTIFY |
Окно создается или уничтожается |
|
WM_QUERYENDSESSION |
Получена команда на завершение сеанса |
|
WM_QUIT |
Завершение работы приложения |
|
WM_SETFOCUS |
Окно получило фокус ввода |
|
WM_SETFONT |
Изменился шрифт |
|
WM_SETREDRAW |
Снимает флаг перерисовки |
|
WM_SETTEXT |
Задает текст в заголовке окна |
|
WM_SHOWWINDOW |
Окно необходимо скрыть или вывести на экран |
|
WM_SIZE |
Изменился размер окна |
Объект приложения отсылает большинство полученных сообщений объекту главного окна (не считая WM_QUIT, которое завершает работу объекта приложения). Объекты в программе на Visual C++ интенсивно общаются друг с другом. Это вполне понятно, поскольку программа делится на четыре главных объекта и каждому из них иногда приходится обращаться к услугам других объектов. На приведенной ниже схеме показано, как организовано взаимодействие четырех главных объектов в программе на Visual C++. Упомянутые методы более подробно описываются в дальнейших работах.
Выжол Ю.А.
Visual C++ |
Лекция 4 |
2 |
Код объекта приложения содержится в файле welcome.cpp. Наибольший интерес для нас представляет метод Initlnstance(), поскольку именно в нем программа собирает остальные классы (главного окна, документа и вида) и объединяет их в шаблон документа, в соответствии с которым объект приложения организует работу программы:
Выжол Ю.А.