HICON hIcon1; // описатель пиктограммы HICON hIcon2; // описатель пиктограммы // Создание стандартной вопросительной пиктограммы. hIcon1 = LoadIcon(NULL, IDI_QUESTION); // Создание личной пиктограммы на основе ресурса. hIcon2 = LoadIcon(hinst, MAKEINTRESOURCE(460)); // Создание личной пиктограммы во время исполнения // приложения.
Создание пиктограмм, используя функцию LoadIcon или LoadImage предпочтительнее, чем создание ее напрямую в приложении функцией CreateIconIndirect. Использование ресурса пиктограммы позволяет избежать аппаратной зависимости, упрощает локализацию и делает пиктограмму доступной всем приложениям (разделяемый ресурс). На этом примере можно посмотреть, как система интерпретирует маску прозрачности для биткарты пиктограммы.
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 битмасок:
AND маска | XOR маска | Отображение |
---|---|---|
0 | 0 | черный |
0 | 1 | белый |
1 | 0 | цвет экрана |
1 | 1 | обратить цвет экрана |