Интерфейс программирования приложений Win32 API
Интерфейс программирования приложений Win32 API представляет собой набор функций и классов, которые используются для программирования приложений, работающих под управлением операционных систем фирмы Microsoft. Следует отметить, что в работе многих функций Win32 API существуют различия, которые зависят от типа операционной системы. Кроме того, некоторые функции работают только в операционной системе Windows 2000 и не поддерживаются операционной системой Windows 98. Все эти случаи будут отмечаться отдельно. Но все же в работе функций Win32 API в разных версиях операционных систем гораздо больше общего, чем различий. Поэтому чаще всего мы будем говорить, что функции Win32 API предназначены для разработки приложений на платформах операционных систем Windows, не делая различия между операционными системами Windows 98 и Windows 2000. Это соглашение значительно облегчит изложение материала, не загромождая его ненужными подробностями, которые отвлекают от сути рассматриваемых вопросов.
Функционально Win32 API подразделяется на следующие категории:
□ Base Services (базовые сервисы);
□ Common Control Library (библиотека общих элементов управления);
□ Graphics Device Interface (интерфейс графических устройств);
□ Network Services (сетевые сервисы);
□ User Interface (интерфейс пользователя);
□ Windows NT Access Control (управление доступом для Windows NT);
□ Windows Shell (оболочка Windows);
□ Windows System Information (информация о системе Windows).
Кратко опишем функции, которые выполняются в рамках этих категорий.
Функции базовых сервисов обеспечивают приложениям доступ к ресурсам компьютера. Категория Common Control Library содержит классы окон, которые часто используются в приложениях. Интерфейс графических устройств обеспечивает функции для вывода графики на дисплей, принтер и другие графические устройства. Сетевые сервисы используются при работе компьютеров в компьютерных сетях. Интерфейс пользователя обеспечивает функции для взаимодействия пользователя с приложением, используя окна для ввода-вывода информации. Категория Windows NT Access Control содержит функции, которые используются для защиты информации путем контроля и ограничения доступа к защищаемым объектам. Категории Windows Shell и Windows System Information содержат соответственно функции для работы с оболочкой и конфигурацией операционной системы Windows.
Типы данных в Win32 API
Прежде всего заметим, что интерфейс программирования приложений Win32 API ориентирован на язык программирования С или, в более широком смысле, на процедурные языки программирования. Поэтому в этом интерфейсе, не используются такие возможности языка программирования C++, как классы, ссылки и механизм обработки исключений.
Чтобы сделать интерфейс Win32 API более независимым от конкретного языка программирования или, может быть, более соответствующим аппаратному обеспечению компьютера, разработчики этого интерфейса определили новые простые типы данных. Эти типы данных используются в прототипах функций интерфейса Win32 API. Новые простые типы данных определены как синонимы простых типов данных языка программирования С. Чтобы отличать эти типы от других типов, их имена определены прописными буквами. Общее количество простых типов данных, определенных в интерфейсе Win32 API, довольно велико. Поэтому ниже приведены определения только тех простых типов данных из этого интерфейса, которые очевидным образом переименовывают простые типы данных языка программирования С.
typedef char CHAR;
typedef unsigned char UCHAR;
typedef UCHAR *PUCHAR;
typedef unsigned char BYTE;
typedef BYTE *PBYTE;
typedef BYTE *LPBYTE;
typedef short SHORT;
typedef unsigned short USHORT;
typedef USHORT *PUSHORT;
typedef unsigned short WORD;
typedef WORD *PWORD;
typedef WORD *LPWORD;
typedef unsigned int UINT;
typedef unsigned int *PUINT;
typedef long LONG;
typedef long *LPLONG;
typedef unsigned long ULONG;
typedef ULONG *PULONG;
typedef unsigned long DWORD;
typedef DWORD *PDWORD;
typedef DWORD *LPDWORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef void *LPVOID;
typedef CONST void *LPCVOID;
Остальные простые типы данных, определенные в интерфейсе Win32 API, имеют, как правило, специфическое назначение и поэтому они будут описаны при их использовании. Кроме того, в интерфейсе Win32 API определены символические константы false и true для обозначения соответственно ложного и истинного логических значений. Определения этих констант приведены ниже.
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
В интерфейсе Win32 API также определено множество сложных типов данных, таких как структуры и перечисления. Как правило, эти типы данных имеют специфическое назначение и поэтому будут описаны при их непосредственном использовании.