Страница 1 из 2
Создание иконки Чтобы использовать иконку, Вашему приложению понадобится получить дескриптор иконки. Следующий пример демонстрирует, как создать два различных дескриптора иконок: один для стандартной иконки с вопросительным знаком, а второй для пользовательской, включённой в приложение как ресурс. Пример 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. |