Описание используемых классом окон ресурсов

Набор используемых ресурсов класса задают в структуре типа WNDCLASS. Эта структура описана следующим образом:

typedef struct

{ UINT style;

WNDPROC lpfnWndProc;

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hbrBackground;

LPCTSTR lpszMenuName;

LPCTSTR lpszClassName;

} WNDCLASS;

Например, если описана структура этого типа:

WNDCLASS wc;

то присваивают определенные значения ее полям. Назначение полей этой структуры:

1. style принимает значения из табл. 1.1. Например:

wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

2. lpfnWndProc указывает на функцию окна. Она будет рассмотрена ниже.

3. cbClsExtra равно количеству дополнительных байт класса.

4. cbWndExtra равно количеству дополнительных байт окна этого класса.

5. hInstance указывает на дескриптор текущего приложения.

6. hIcon указывает на имя пиктограммы (иконки), в которую превращается окно при минимизации. Ресурс иконки загружают функцией LoadIcon:

HICON LoadIcon(HINSTANCE hInst, LPCTSTR lpIconName);

Параметр lpIconName указывает на строку с именем загружаемой иконки, a hInst – дескриптор приложения, чей исполняемый код содержит загружаемый ресурс. Для загрузки стандартной иконки hInst приравнивают NULL, а в качестве lpIconName задают одно из значений табл. 1.2. Например, следующий оператор устанавливает стандартную пиктограмму окна приложения:

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

В случае аварийного завершения функция возвращает NULL и при сворачивании окон этого класса операционная система в качестве иконки использует логотип Windows.

7. hCursor задает вид курсора мыши при его прохождении над окном. Ресурс курсора загружают функцией LoadCursor:

HCURSOR LoadCursor(HINSTANCE hInst, LPCTSTR lpCursorName);

Параметр lpCursorName указывает на строку с именем загружаемого ресурса, a hInst – дескриптор приложения, чей исполняемый код содержит загружаемый ресурс. Для загрузки стандартного курсора hInst приравнивают NULL, а в качестве lpCursorName задают одно из значений табл. 1.3. Например, следующий оператор задает курсор в виде стандартной стрелки:

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

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

Функции LoadIcon и LoadCursor загружают ресурс иконки или курсора, только если ресурс не был загружен; иначе выбирают дескриптор загруженного ресурса.

8. hbrBackground задает дескриптор кисти закрашивания фона окна. В качестве кисти можно использовать "чистые" цвета или пиктограмму. Чаще используют значение системного цвета (табл. 1.4.) плюс 1. Цвета преобразуют в тип HBRUSH. Например, следующий оператор устанавливает системный цвет закрашивания фона:

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

Система сама удаляет кисть фона при освобождении класса. Если указать NULL, то приложение само должно красить фон окон. Для определения необходимости закрашивания приложение обрабатывает сообщение WM_ERASEBKGND или проверяет поле fErase структуры PAINTSTRUCT, заполненной функцией BeginPaint.

9. lpszMenuName указывает на имя ресурса главного меню окон этого класса. Если задать NULL, окна этого класса не имеют заданного по умолчанию меню. Например:

wc.lpszMenuName = (LPCTSTR)NULL;

10. lpszClassName указывает на текстовую строку, содержащую имя регистрируемого класса окон, например:

wc.lpszClassName = szName;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: