Управление растровым изображением. Структура Windows-приложения. Развитие стартовой заготовки

Страницы работы

Содержание работы

Управление растровым изображением

Традиционные приложения 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) курсора мыши.

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

Проект Win32 Application

1.  Выберите команду File4New4Project.

2.  Выберите тип проекта: Win32 Application, имя проекта: API, а также местоположение папки с проектом.

3.  Установите флаг, определяющий разновидность проекта: Anemptyproject — пустой проект (без файлов).

4.  Для подключения к проекту нового (пустого) файла выберите команду File4New.

5.  В появившемся диалоговом окне выберите страницу File.

6.  Выберите тип файла: C++ Source File, имя файла: API. Не забудьте установить флажок: Add to project.

7.  Создайте функцию WinMain и оконную процедуру, тексты которых приведены ниже.

Структура Windows-приложения

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

¨  WinMain, с которой начинается выполнение программы и которая «закручивает» цикл ожидания сообщений,

¨  Оконной процедуры, которую вызывает система, направляя ей соответствующие сообщения.

Похожие материалы

Информация о работе