Использование иконок


Создание иконки

Чтобы использовать иконку, Вашему приложению понадобится получить дескриптор иконки. Следующий пример демонстрирует, как создать два различных дескриптора иконок: один для стандартной иконки с вопросительным знаком, а второй для пользовательской, включённой в приложение как ресурс.

Пример

HICON hIcon1; // дескриптор иконки
HICON hIcon2; // дескриптор иконки

// Создание стандартной иконки с вопросом.

hIcon1 = LoadIcon(NULL, IDI_QUESTION);

// Создание иконки из ресурса.

hIcon2 = LoadIcon(hinst, MAKEINTRESOURCE(460));

// Создание собственной иконки в процессе работы приложения.

Обычно, для создания собственной иконки из ресурса, приложение должно использовать функции LoadIcon или LoadImage, вместо того, чтобы создавать эти иконки в процессе работы приложения. Этот подход позволяет сделать приложение устройство-независимым, упростить локализацию. Однако следующий пример использует функцию CreateIcon для создания собственной иконки в процессе работы приложения, основанный на битовых масках.

Пример

HICON hIcon3; // дескриптор иконки

// битовая маска AND

BYTE ANDmaskIcon[] = {0xFF, 0xFF, 0xFF, 0xFF, // строка 1
0xFF, 0xFF, 0xC3, 0xFF, // строка 2
0xFF, 0xFF, 0x00, 0xFF, // строка 3
0xFF, 0xFE, 0x00, 0x7F, // строка 4

0xFF, 0xFC, 0x00, 0x1F, // строка 5
0xFF, 0xF8, 0x00, 0x0F, // строка 6
0xFF, 0xF8, 0x00, 0x0F, // строка 7
0xFF, 0xF0, 0x00, 0x07, // строка 8

0xFF, 0xF0, 0x00, 0x03, // строка 9
0xFF, 0xE0, 0x00, 0x03, // строка 10
0xFF, 0xE0, 0x00, 0x01, // строка 11
0xFF, 0xE0, 0x00, 0x01, // строка 12

0xFF, 0xF0, 0x00, 0x01, // строка 13
0xFF, 0xF0, 0x00, 0x00, // строка 14
0xFF, 0xF8, 0x00, 0x00, // строка 15
0xFF, 0xFC, 0x00, 0x00, // строка 16

0xFF, 0xFF, 0x00, 0x00, // строка 17
0xFF, 0xFF, 0x80, 0x00, // строка 18
0xFF, 0xFF, 0xE0, 0x00, // строка 19
0xFF, 0xFF, 0xE0, 0x01, // строка 20

0xFF, 0xFF, 0xF0, 0x01, // строка 21
0xFF, 0xFF, 0xF0, 0x01, // строка 22
0xFF, 0xFF, 0xF0, 0x03, // строка 23
0xFF, 0xFF, 0xE0, 0x03, // строка 24

0xFF, 0xFF, 0xE0, 0x07, // строка 25
0xFF, 0xFF, 0xC0, 0x0F, // строка 26
0xFF, 0xFF, 0xC0, 0x0F, // строка 27
0xFF, 0xFF, 0x80, 0x1F, // строка 28

0xFF, 0xFF, 0x00, 0x7F, // строка 29
0xFF, 0xFC, 0x00, 0xFF, // строка 30
0xFF, 0xF8, 0x03, 0xFF, // строка 31
0xFF, 0xFC, 0x3F, 0xFF}; // строка 32

// битовая маска XOR

BYTE XORmaskIcon[] = {0x00, 0x00, 0x00, 0x00, // строка 1
0x00, 0x00, 0x00, 0x00, // строка 2
0x00, 0x00, 0x00, 0x00, // строка 3
0x00, 0x00, 0x00, 0x00, // строка 4

0x00, 0x00, 0x00, 0x00, // строка 5
0x00, 0x00, 0x00, 0x00, // строка 6
0x00, 0x00, 0x00, 0x00, // строка 7
0x00, 0x00, 0x38, 0x00, // строка 8

0x00, 0x00, 0x7C, 0x00, // строка 9
0x00, 0x00, 0x7C, 0x00, // строка 10
0x00, 0x00, 0x7C, 0x00, // строка 11
0x00, 0x00, 0x38, 0x00, // строка 12

0x00, 0x00, 0x00, 0x00, // строка 13
0x00, 0x00, 0x00, 0x00, // строка 14
0x00, 0x00, 0x00, 0x00, // строка 15
0x00, 0x00, 0x00, 0x00, // строка 16

0x00, 0x00, 0x00, 0x00, // строка 17
0x00, 0x00, 0x00, 0x00, // строка 18
0x00, 0x00, 0x00, 0x00, // строка 19
0x00, 0x00, 0x00, 0x00, // строка 20

0x00, 0x00, 0x00, 0x00, // строка 21
0x00, 0x00, 0x00, 0x00, // строка 22
0x00, 0x00, 0x00, 0x00, // строка 23
0x00, 0x00, 0x00, 0x00, // строка 24

0x00, 0x00, 0x00, 0x00, // строка 25
0x00, 0x00, 0x00, 0x00, // строка 26
0x00, 0x00, 0x00, 0x00, // строка 27
0x00, 0x00, 0x00, 0x00, // строка 28

0x00, 0x00, 0x00, 0x00, // строка 29
0x00, 0x00, 0x00, 0x00, // строка 30
0x00, 0x00, 0x00, 0x00, // строка 31
0x00, 0x00, 0x00, 0x00}; // строка 32

hIcon3 = CreateIcon(hinst, // экземпляр приложения
32, // ширина иконки
32, // высота иконки
1, // количество слоёв XOR
1, // количество битов на пиксель
ANDmaskIcon, // битовая маска AND
XORmaskIcon); // битовая маска XOR

Для создания иконки CreateIcon применяет следующую таблицу истинности для битовых масок AND и XOR.

 
« Предыдущая статья   Следующая статья »