
Что представляют собой сообщения?
Сообщения представляют собой короткие блоки информации фиксированной структуры, которыми могут обмениваться между собой потоки приложений и их оконные объекты. Передаваемый в сообщении блок информации характеризуется структурой MSG, которая определяется следующим образом:
Typedef struct tagMSG
{
HWND hWnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
Здесь hWnd - дескриптор окна, которому направлено сообщение, message - идентификатор сообщения, wParam и lParam - параметры сообщения, time - задает время, когда, сообщение было послано, pt - задает положение курсора мыши, когда было послано сообщение.
Заметим, что в Win16 параметр wParam был 16-разрядным, откуда и его название. В Win32 он стал 32-разрядным, однако в целях сохранения совместимости сохранил свое имя.
Из объявления оконной процедуры видно, что ей передается только часть информации, которая посылается с сообщением. Параметры wParam и lParam содержат различную информацию, характеризующую данное сообщение. Часто информация, размещенная в каждом из них, состоит из двух 16-разрядных частей. Win32 АРI обеспечивает макросы LOWORD и HIWORD для доступа, соответственно, к младшему и старшему слову параметра. При программировании с использованием МРС этими макросами редко приходится пользоваться, так как эта библиотека содержит массу обработчиков сообщений, которые предоставляют информацию, пришедшую с сообщением в удобной форме.
Современные версии операционных систем Windows насчитывают несколько сотен различных сообщений, так что привести их исчерпывающее описание в рамках этой книги просто невозможно. Однако со многими из сообщений вы встретитесь при изучении материала следующих глав. Здесь же мы заметим, что все сообщения Windows можно разбить на три больших класса:
командные сообщения, поступающие от элементов визуального интерфейса (который включает меню, кнопки панели инструментов и акселераторы);
извещения (notification messages), поступающие от дочерних окон (элементов визуального интерфейса таких, как кнопки, списки, раскрывающиеся списки, элементы редактирования и пр.) родительскому окну или окну-владельцу;
все остальные сообщения Windows.
Порядок работы
Создать приложение по примеру, описанному выше. При этом при создании нового проекта отметку Empty project не ставить.
Изучить структуру созданного проекта (файлы, функции, ресурсы). Найти отличия от рассмотренного выше примера структуры.
Изменить цвет, заголовок и размеры окна в этом приложении.
Создать такое приложение с помощью Мастера приложений с готовым шаблоном (при создании НЕ отмечать поле Empty Project), изучить его структуру. Создать и добавить свои 2 иконки (большую и малую) и курсор. Изменить заголовок окна.
Изменить информацию об авторах программы (в дополнительном диалоговом окне)
По результатам выполнения работы оформить отчет.
Список литературы
Глушаков С.В., Коваль А.В., Черепнин С.А. Программирование на Visual C++ – М.: ООО «Издательство АСТ»; Харьков: «Фолио», 2003. – 726 с.
Пирогов В.Ю. Программирование на Visual C++.NET. – СПб.: БХВ-Петербург, 2003. – 800 с.
Фролов А.В., Фролов Г.В. Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Том 24. / Библиотека системного программиста, 1996. - 129 с.