ShowWi ndow(hWnd. OknIcon); UpdateWindow(hWnd);
}
}

Приложение после создания окна выполняет функцией strstrO поиск подстроки Embedded в командной строке. При ее отсутствии вызываются функции ShowWi ndowO, UpdateWindow(hWnd). Первая выводит окно на экран, а вторая передает ему при необходимости сообщение WM_PAINT.

Некоторые полезные функции и структуры данных

Типы данных Windows

При программировании в среде Windows используется множество типов данных, не предусмотренных стандартом используемого языка программирования. Эти типы данных определены в заголовочных файлах при помощи конструкций #def i пе или typedef.

Некоторые из них интуитивно понятны. Например, DWORD, PV0ID, очевидно, определяют двойное слово и указатель. Дескрипторы HANDLE, HWND, HRGN, HMENU введены, чтобы идентифицировать конкретные экземпляры специфичных для Windows объектов, к которым относятся, например, окна и меню. Например, дескриптор окна типа HWND необходимо знать для организации вывода в окно текстовой и графической информации. В системе есть средства, позволяющие приложениям создавать области достаточно сложной формы при помощи комбинации прямоугольных, многоугольных и эллиптических областей. С такой областью работают, используя ее дескриптор HRGN.

В файле Winnt.h можно найти определение макрокоманды DECLARE_HANDLE, которое приведено ниже:

typedef void *PV0ID; то есть это указатель на тип void, fifdef STRICT

typedef void *HANDLE; #define DECLARE_HANDLE(name) struct name##_ {int unused;};\ typedef struct name##_ *name #else
typedef PVOID HANDLE:
#define DECLARE_HANDLE(name) typedef HANDLE name #endif,

В файле windet".h можно найти множество обращений к макрокомандам:

DECLARE_HANDLE (HWND); DECLARE_HANDLE(HMENU); DECLARE_HANDLE(HBITMAP);

Создание простейшего приложения

Эти обращения стоит рассмотреть подробнее.

Если не определена константа STRICT, то, как следует из второй половины приведенного вцше определения DECLARE_HANDLE(name), все типы данных, объявленные при помощи DECLARE_HANDLE(), эквивалентны типу PV0ID. Например, DECLARE_HANDLE (HMENU) препроцессор заменит строкой typedef HANDLE HMENU, то есть определит тип HMENU как HANDLE. Выше было указано, что тип HANDLE эквивалентен PVOID, a PV0ID, в свою очередь, совпадает с void *.


⇐ Предыдущая| |Следующая ⇒