Использование пиктограммы при регистрации класса окна
Во всех приложениях, описанных в предыдущем томе "Библиотеки системного программиста", для класса главного окна приложения мы определяли встроенную в 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 и освобождает ранее занимаемую этой пиктограммой память.