Операционная система Microsoft Windows 3.1 для программиста -том 2

Использование пиктограммы при регистрации класса окна


Во всех приложениях, описанных в предыдущем томе "Библиотеки системного программиста", для класса главного окна приложения мы определяли встроенную в Windows пиктограмму с идентификатором IDI_APPLICATION. Для этого мы вызывали функцию LoadIcon:

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

Эта функция имеет следующий прототип:

HICON WINAPI LoadIcon(HINSTANCE hInst, LPCSTR lpszIcon);

Параметр hInst является идентификатором текущей копии приложения.

Параметр lpszIcon - идентификатор ресурса или дальний указатель на строку, идентифицирующую ресурс.

Функция LoadIcon возвращает идентификатор загруженной пиктограммы или NULL при ошибке.

Если в файле описания ресурсов идентификатор пиктограммы представлен в виде текстовой строки, в качестве второго параметра функции LoadIcon следует передать указатель на эту строку.

Следующая строка задает для класса главного окна приложения пиктограмму, определенную в файле описания ресурсов под именем AppIcon:

wc.hIcon = LoadIcon(hInstance, "AppIcon");

Если же для идентификатора пиктограммы используется целое число, второй параметр следует определить с использованием макрокоманды MAKEINTRESOURCE, определенной в файле windows.h:

#define MAKELP(sel, off) ((void FAR*)MAKELONG((off), (sel))) #define MAKEINTRESOURCE(i) ((LPCSTR)MAKELP(0, (i)))

Например, пусть в файле описания ресурсов определена пиктограмма с целым числом в качестве идентификатора:

456 ICON great.ico

В этом случае загрузка пиктограммы должна выполняться следующим образом:

wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(456));

Возможен еще один вариант:

wc.hIcon = LoadIcon(hInstance, "#456");

Для Windows символ "#" означает, что значение 456 является текстовой строкой.

Если пиктограмма, загруженная с помощью функции LoadIcon, вам больше не нужна, вы можете освободить занимаемую ей память, вызвав функцию DestroyIcon:

BOOL WINAPI DestroyIcon(HICON hIcon);

Функция DestroyIcon уничтожает пиктограмму, идентификатор которой задан параметром hIcon и освобождает ранее занимаемую этой пиктограммой память.



Содержание раздела