Традиционные приложения Win32, основанные на использовании функций API (Application Programming Interface), создаются с помощью набора инструментов, объединенных в разделе SDK (Software Development Kit) студии разработчика. В состав API входят не только функции (более 5000), но и множество структур, макросов, интерфейсов и более 800 сообщений. Доводами в пользу того, что существует необходимость знать и постоянно углублять свои познания в технологии разработки приложений с помощью SDK, могут быть следующие:
¨ Каркас MFC- или .NET-приложений содержит внутри себя структуру традиционного Windows-приложения;
¨ Многие методы MFC- или .NET-классов содержат (инкапсулируют) вызовы API-функций;
¨ Накоплен огромный банк готовых решений на основе SDK, которые достаточно просто внедряются в приложения. Не пользоваться этим багажом—означает обеднять себя.
Если поведение DOS-приложений полностью определено последовательностью кодов вашей программы, то поведение и последовательность действий в программах, управляемых событиями (event-driven application), в большей степени зависит от текущего состояния операционной системы, чем от порядка следования кодов программы. Большую часть времени Windows-приложение находится в состоянии ожидания событий, точнее сообщений о них. Поведение таких приложений определяется потоком сообщений о событиях в системе.
Каждое событие сопровождается генерацией сообщения о нем. Все сообщения Windows имеют стандартные имена, многие из которых начинаются с префикса WM_ (Windows Message). Например, WM_PAINT именует сообщение о том, что необходимо перерисовать содержимое окна того приложения, которое получило это сообщение. Идентификатор сообщения WM_PAINT — это символьная константа, обозначающая число 15 (0x000F).
Другие примеры: при создании окна система посылает сообщение WM_CREATE (с кодом 1), по истечении кванта времени таймера (если он включен) система генерирует сообщение WM_TIMER (с кодом 0x0113), при нажатии леаой кнопки мыши вырабатывается сообщение WM_LBUTTONDOWN (с кодом 0x0201) и т. д.
Сообщения могут поступать от различных источников, но все они попадают в одну очередь системных сообщений. Некоторые из них система передаст в другую очередь—очередь сообщений приложения. Все это время приложение выполняет цикл ожидания сообщений. По приходе сообщения управление передается оконной процедуре данного приложения. Для того, чтобы произвести какие-то действия в ответ на сообщение, вы должны ввести в оконную процедуру некий код. Он располагается в соответствующей ветви оператора switch, который реализует ветвление в зависимости от кода поступившего сообщения.
Тип структур MSG (сообщений) определен в одном из подключаемых файлов заголовков так:
typedef struct tagMSG // Ярлык типа. Структура самого типа определена { в блоке } ниже
{
HWND hwnd; // Описатель окна, чья оконная процедура получает сообщение
UINT message; // Код сообщения
WPARAM wParam; // Два параметра содержат дополнительную информацию, зависящую от сообщения
LPARAM lParam; // wParam и lParam несут важную информацию, сопутствующую сообщению
DWORD time; // Время посылки сообщения
POINT pt; // Точка экрана, где был курсор в момент посылки сообщения
}
MSG; // Тип структур, эквивалентный ярлыку
Универсальные параметры wParam и lParam используются различным образом в различных сообщениях. Например, в сообщении WM_MOUSEMOVE первый из них содержит идентификатор одновременно нажатой клавиши (Ctrl, Shift и т.д.), а второй (lParam) — упакованные экранные координаты (x, y) курсора мыши.
Приложение реагирует или не реагирует на сообщение, но в любом случае оно удаляет его из очереди сообщений. По отношению к приложению, сообщения появляются случайным образом и невозможно предсказать, какое сообщение появится в следующий момент.
1. Выберите команду File4New4Project.
2. Выберите тип проекта: Win32 Application, имя проекта: API, а также местоположение папки с проектом.
3. Установите флаг, определяющий разновидность проекта: Anemptyproject — пустой проект (без файлов).
4. Для подключения к проекту нового (пустого) файла выберите команду File4New.
5. В появившемся диалоговом окне выберите страницу File.
6. Выберите тип файла: C++ Source File, имя файла: API. Не забудьте установить флажок: Add to project.
7. Создайте функцию WinMain и оконную процедуру, тексты которых приведены ниже.
Рассмотренная модель выработки и прохождения сообщений поможет вам понять структуру, принятую для всех Windows-приложений. Последние два блока в приведенной на рисунке схеме определяют особенности строения любого Windows-приложения. Поэтому даже простейшее из них должно состоять из двух функций:
¨ WinMain, с которой начинается выполнение программы и которая «закручивает» цикл ожидания сообщений,
¨ Оконной процедуры, которую вызывает система, направляя ей соответствующие сообщения.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.