![]() |
ПиктограммыНА ЭТОЙ СТРАНИЦЕ:О пиктограммах Горячая точка пиктограммы Типы пиктограмм Размеры пиктограмм Создание пиктограммы Отображение пиктограммы Уничтожение пиктограммы Копирование пиктограмм Функции для работы с пиктограммами Структуры для работы с пиктограммами Сообщения для работы с пиктограммами Примеры О пиктограммахПиктограмма - это изображение, состоящее из биткарты и маски для создания прозрачных областей в нем. Термин пиктограмма применим к:- Одиночной пиктограмме (ресурс типа RT_ICON) - Набору изображений, из которых система или приложение выбирает наиболее подходящую пиктограмму, основываясь на их размере и глубине цвета (ресурс типа RT_GROUP_ICON). Система использует пиктограммы для отображения таких объектов как файлы, папки, ярлыки, приложения и документы. Горячая точка пиктограммыОдин из пикселей пиктограммы называется ГОРЯЧЕЙ ТОЧКОЙ, который рассматривается как позиция пиктограммы. Обычно этот пиксель располагается в центре пиктограммы. Типы пиктограммСистемные пиктограммы - пиктограммы предоставляемые операционной системой и доступные любому приложению. В заголовочных файлах SDK идентификаторы этих пиктограмм начинаются с префикса IDI_.Каждая стандартная пиктограмма связана по умолчанию с каким-либо изображением, которое можно заменить в любое время. Личная пиктограмма приложения - пиктограмма, разработанная для использования в отдельном приложении. Размеры пиктограмм
Изменение ее размера происходит из "Панели управления" (Control Panel) / "Экран" (Display), вкладка "Оформление" (Appearance). Выберете из списка элемент "Кнопки управления окном" (Caption Buttons) и установите нужное значение в поле "Размер" (Size). Для получения размера маленькой системной пиктограммы вызовете функцию GetSystemMetrics с параметрами SM_CXSMICON и SM_CYSMICON. Большая системная пиктограмма в основном используется приложениями, но так же отображается в диалоге вызываемом по Alt + Tab. С такими пиктограммами работают функции CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconEx и LoadIcon. Размер большой системной пиктограммы зависит от видеодрайвера и поэтому не может быть изменен. Для получения ее размера используется функция GetSystemMetrics с параметрами SM_CXICON и SM_CYICON. Функции CreateIcon, CreateIconFromResourceEx, CreateIconIndirect и SHGetFileInfo могут использоваться для работы с пиктограммами, размеры которых отличаются от размеров большой системной пиктограммы. Маленькая пиктограмма оболочки используется в Проводнике и общих диалоговых окнах. В настоящее время по умолчанию ее размеры равны маленькой системной пиктограмме. Для получения размера маленькой системной пиктограммы нужно вызвать функцию SHGetFileInfo с параметрами SHGFI_SHELLICONSIZE | SHGFI_SMALLICON для получения описателя списка системных изображений. Затем вызывается функция ImageList_GetIconSize для получения размера пиктограммы. Большая пиктограмма оболочки используется на рабочем столе. Изменение ее размера происходит из "Панели управления" (Control Panel) / "Экран" (Display), вкладка "Оформление" (Appearance). Выберете из списка элемент "Значок" (Icon) и установите нужное значение в поле "Размер" (Size) (этот размер сохраняется в реестре по ветке HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics параметр "Shell Icon Size"). Перейдите на вкладку "Эффекты" (Plus!) и установите параметр "Использовать крупные значки" (Use Large Icons). Для получения размера больших пиктограмм оболочки нужно вызвать функцию SHGetFileInfo с параметрами SHGFI_SHELLICONSIZE для получения описателя списка системных изображений. Затем вызывается функция ImageList_GetIconSize для получения размера пиктограммы. Приложения должны предоставлять системе набор следующих пиктограмм: При заполнении структуры WNDCLASSEX члену hIcon присваивается описатель пиктограммы 32 х 32, а члену hIconSm пиктограмма 16 х 16. Создание пиктограммыСтандартные пиктограммы предопределены, поэтому нет необходимости в их создании. Для использования стандартной пиктограммы приложению нужно получить ее описатель функцией LoadImage. ОПИСАТЕЛЬ ПИКТОГРАММЫ - это уникальное значение типа HICON, которое используется как идентификатор стандартной пиктограммы или личной пиктограммы приложения.Для создания своих пиктограмм обычно используется графический редактор, а затем они прописываются в файле описания ресурсов. В течение выполнения приложения можно вызывать функцию LoadIcon или LoadImage для получения описателей этих пиктограмм. Ресурс пиктограммы может содержать набор изображений для различных типов устройств отображения, из которых LoadIcon и LoadImage автоматически выберут наиболее подходящие. Приложение в течение своего выполнения может так же создать личную пиктограмму функцией CreateIconIdirect, которая создает пиктограмму на основе содержимого структуры ICONINFO. Функция GetIconInfo получает информацию об указанной ей пиктограмме и помещает эти данные в структуру ICONINFO. Создание пиктограмм, используя функцию LoadIcon или LoadImage предпочтительнее, чем создание ее напрямую в приложении функцией CreateIconIndirect. Использование ресурса пиктограммы позволяет избежать аппаратной зависимости, упрощает локализацию и делает пиктограмму доступной всем приложениям (разделяемый ресурс). Функция CreateIconFromResourceEx позволяет создать пиктограмму на основе двоичных данных ресурса любого исполняемого или DLL файла. Перед вызовом этой функции необходимо вызвать функцию LookupIconIdFromDirectoryEx, которая вернет идентификатор наиболее подходящей пиктограммы для текущего устройства отображения. Отображение пиктограммыИзображение пиктограммы можно получить функцией GetIconInfo, а нарисовать его функцией DrawIconEx. Для отображения системного изображения пиктограммы по умолчанию, укажите флаг DI_COMPAT в вызове функции DrawIconEx. Если не указать этот флаг, то будет нарисована пиктограмма с изображением указанным пользователем.Для того чтобы система отобразила пиктограмму, она должна извлечь из .exe или .dll файла наиболее подходящее изображение. Система рассматривает все цвета с глубиной 8 бит на пиксель и более как равноприоритетные. Поэтому нет смысла размещать в одном ресурсе изображения 16х16, 16 цветов и 16х16, 256 цветов - система просто выберет первое попавшееся из них. Глубина цветов будет иметь значение при работе видеосистемы в режиме 8 бит на пиксель. В этом случае система точно выберет 16-цветное изображение для отображения пиктограммы. Для отображения анимированной пиктограммы используйте статический элемент управления как показано в следующем примере: Уничтожение пиктограммыЕсли приложению не нужна пиктограмма созданная функцией CreateIconIndirect, то она должны быть уничтожена функцией DestroyIcon. Она уничтожает описатель пиктограммы и освобождает занимаемую ею память. Уничтожить можно только пиктограммы созданные функцией CreateIconIndirect.Копирование пиктограммCopyIcon копирует описатель пиктограммы. Это позволяет приложению или DLL получить описатель пиктограммы, принадлежащей другому модулю.CopyImage создает новую пиктограмму основываясь на данных указанной ей пиктограммы. При этом размеры новой пиктограммы могут отличаться от исходной пиктограммы. DuplicateIcon создает абсолютную копию указанной пиктограммы. Функции для работы с пиктограммамиCopyIcon - копирует пиктограмму из указанного модуля. CreateIcon - создание пиктограммы по указанному размеру, цвету и набору бит. CreateIconFromResource - создание пиктограммы или курсора на основе ресурса. CreateIconFromResourceEx - создание пиктограммы или курсора на основе ресурса с указанием желаемой высоты и ширины. CreateIconIndirect - создает пиктограмму или курсор на основе структуры ICONINFO. DestroyIcon - уничтожает пиктограмму. Уничтожить можно только пиктограммы созданные функцией CreateIconIndirect. DrawIcon - рисует пиктограмму. DrawIconEx - рисует пиктограмму или курсор производя растровые операции, растягивая или сжимая курсор или пиктограмму. DuplicateIcon - создает копию указанной пиктограммы. ExtractAssociatedIcon - возвращает описатель индексированной пиктограммы в файле или пиктограммы обнаруженной в ассоциированном с ним исполняемом файле. ExtractIcon - возвращает описатель пиктограммы в исполняемом, .dll файле или файле пиктограммы. ExtractIconEx - создает массив описателей больших или маленьких пиктограмм извлеченных из .exe, .dll или .ico файла. GetIconInfo - получает информацию о пиктограмме или курсоре. LoadIcon - загружает пиктограмму из исполняемого файла ассоциированного с приложением. Эта функция заменяет функцию LoadIcon. LookupIconIdFromDirectory - ищет пиктограмму или курсор наиболее подходящую текущему устройству отображения. LookupIconIdFromDirectoryEx - ищет пиктограмму или курсор наиболее подходящую текущему устройству отображения с указанием желаемой высоты и ширины. Структуры для работы с пиктограммамиICONINFO - структура для хранения информации о курсоре или пиктограмме. ICONMETRICS - структура для хранения масштабируемых параметров пиктограмм. Сообщения для работы с пиктограммамиWM_ERASEBKGND - сообщение отсылаемое при возникновении необходимости стереть фон окна (например, при изменении размеров этого окна) WM_ICONERASEBKGND - используется только в Windows NT 3.51 и более ранних версиях. WM_PAINTICON - используется только в Windows NT 3.51 и более ранних версиях. ПримерыПример 1 - создание описателей двух разных пиктограмм: первая - стандартный знак вопроса, вторая - личная пиктограмма приложения находящееся в ресурсной части его исполняемого файла. А так же создание личной пиктограммы во время исполнения приложения.Пример 2 - В примере демонстрируется, как отобразить пиктограмму в клиентской области окна и заменить пиктограмму зарегистрированного оконного класса на любую другую. Пример 3 - создание пиктограммы основанной на данных другого исполняемого файла и ее отображение в окне. |
![]() ![]() ![]() ![]()
![]() |