Традиционные приложения 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. Для этого:
¨ В меню File4New выберите команду Project., в диалоге New Project, (окно Project Types) раскройте узел дерева под именем Visual C++ Projects, а в окне Templates выберите тип проекта Win 32 Project.
¨ В поле Name задайте имя проекта API, а в поле Location задайте файловый путь для новой папки с файлами проекта (D:\Users\ВашаПапка).
¨ Нажмите OK, и в появившемся окне мастера Win32 Application Wizard раскройте страницу Application Settings. Не устанавливайте флажок Empty Project и нажмите кнопку Finish.
¨ Удалите из проекта папку Resources, удалите также все файлы за исключением трех: stdafx.h, stdafx.cpp и API.cpp. Из контекстного меню проекта откройте страницу свойств (команда Properties) и откажитесь от кодировки Unicode, выбрав из списка строку Use Multi-Byte Character Set.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.