À propos des icônes

Le système utilise des icônes dans l’interface utilisateur pour représenter des objets tels que des fichiers, des dossiers, des raccourcis, des applications et des documents. Les fonctions d’icône permettent aux applications de créer, charger, afficher, organiser, animer et détruire des icônes. Pour plus d’informations sur la spécification d’icônes pour les types de fichiers, consultez ExtractIcon.

Cette vue d’ensemble fournit des informations sur les sujets suivants :

Point chaud de l’icône

L’un des pixels d’une icône est désigné comme point chaud, c’est-à-dire le point que le système suit et reconnaît comme position de l’icône. Le point chaud d’une icône est généralement le pixel situé au centre de l’icône. Si vous utilisez la fonction CreateIconIndirect pour créer une icône, vous pouvez spécifier n’importe quel pixel comme point chaud.

Types d’icônes

Le système d’exploitation fournit un ensemble d’icônes standard qui peuvent être utilisées à tout moment par n’importe quelle application. Les fichiers d’en-tête du Kit de développement logiciel (SDK) contiennent des identificateurs pour les icônes système . Les identificateurs commencent par le préfixe IDI_ .

Valeur Signification
IDI_APPLICATION
MAKEINTRESOURCE(32512)
Icône d’application par défaut
IDI_ERROR
MAKEINTRESOURCE(32513)
Icône d’erreur
IDI_QUESTION
MAKEINTRESOURCE(32514)
Icône point d’interrogation
IDI_WARNING
MAKEINTRESOURCE(32515)
Icône Avertissement
IDI_INFORMATION
MAKEINTRESOURCE(32516)
Icône d’informations
IDI_WINLOGO
MAKEINTRESOURCE(32517)
Icône de logo Windows
IDI_SHIELD
MAKEINTRESOURCE(32518)
Icône du bouclier de sécurité

Consultez Recommandations pour plus d’informations sur l’utilisation recommandée des icônes standard.

En outre, à compter de Windows Vista, un ensemble supplémentaire d’icônes d’interpréteur de commandes système standard est disponible via la méthode SHGetStockIconInfo .

Les icônes personnalisées sont conçues pour être utilisées dans une application particulière et peuvent être n’importe quelle conception. L’utilisateur peut charger des icônes personnalisées à partir de fichiers ou les créer au moment de l’exécution. Voici plusieurs icônes personnalisées.

plusieurs icônes personnalisées

Tailles d’icônes

Le système utilise quatre tailles d’icônes :

  • Petit système
  • Grande taille du système
  • Interpréteur de commandes petit
  • Interpréteur de commandes grand
  • Jumbo (démarrage de Windows Vista)

La petite icône système s’affiche dans la fenêtre légende.

Consultez Mise à l’échelle des icônes pour obtenir des recommandations sur les tailles d’icônes préférées pour votre application.

Pour modifier la taille de la petite icône système

  1. À partir de Panneau de configuration, cliquez sur Afficher, puis sur l’onglet Apparence.
  2. Sélectionnez Boutons de légende dans la liste Élément , puis définissez le champ Taille .

Pour récupérer la taille de l’icône système petite

L’icône grand système est principalement utilisée par les applications, mais elle est également affichée dans la boîte de dialogue Alt+Tab. Les fonctions CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconEx et LoadIcon utilisent toutes des icônes de taille système. La taille de l’icône grand système étant définie par le pilote vidéo, elle ne peut pas être modifiée.

Pour récupérer la taille de l’icône de taille système

Les fonctions CreateIcon, CreateIconFromResourceEx, CreateIconIndirect et SHGetFileInfo peuvent être utilisées pour utiliser des icônes dans des tailles autres que celles du système.

La petite icône de l’interpréteur de commandes est utilisée dans les Explorer Windows et les boîtes de dialogue courantes. Actuellement, cette valeur est définie par défaut sur la petite taille du système.

Pour récupérer la taille de la petite icône de l’interpréteur de commandes

  1. Utilisez la fonction SHGetFileInfo avec SHGFI_SHELLICONSIZE | SHGFI_SMALLICON pour récupérer un handle dans la liste d’images système.
  2. Appelez ensuite la fonction ImageList_GetIconSize pour obtenir la taille de l’icône.

L’icône de grand interpréteur de commandes est utilisée sur le bureau.

Pour modifier la taille de la grande icône

  1. À partir Panneau de configuration , cliquez sur Afficher, puis sur l’onglet Apparence.
  2. Sélectionnez Icône dans la liste Élément , puis définissez le champ Taille (cette taille est stockée dans le Registre, sous HKEY_CURRENT_USER\Control Panel, Desktop\WindowMetrics\Shell Icon Size).
  3. Cliquez sur l’onglet Plus!, puis sélectionnez la zone Utiliser de grandes icônes case activée.

Pour récupérer la taille de l’icône grande de l’interpréteur de commandes

  1. Utilisez la fonction SHGetFileInfo avec SHGFI_SHELLICONSIZE pour récupérer un handle dans la liste d’images système.
  2. Appelez ensuite la fonction ImageList_GetIconSize pour obtenir la taille de l’icône.

Lorsque vous renseignez la structure WNDCLASSEX à utiliser dans l’inscription de votre classe window, définissez le membre hIcon sur l’icône système grande (généralement 32x32) et le membre hIconSm sur la petite icône système (généralement 16x16). Pour plus d’informations sur les icônes de classe, consultez Icônes de classe.

Création d’icônes

Les icônes standard étant prédéfinies, il n’est pas nécessaire de les créer. Pour utiliser une icône standard, une application peut obtenir son handle à l’aide de la fonction LoadImage . Un handle d’icône est une valeur unique du type HICON qui identifie une icône standard ou personnalisée.

Pour créer une icône personnalisée pour une application, vous utilisez généralement une application graphique et incluez la ressource ICON dans le fichier de définition de ressource de l’application. Au moment de l’exécution, vous pouvez appeler LoadIcon ou LoadImage pour récupérer un handle à l’icône. Une ressource d’icône peut contenir un groupe d’images pour plusieurs périphériques d’affichage différents. LoadIcon et LoadImage sélectionnent automatiquement l’icône la plus appropriée dans le groupe pour l’appareil d’affichage actuel.

Une application peut également créer une icône personnalisée au moment de l’exécution à l’aide de la fonction CreateIconIndirect , qui crée une icône en fonction du contenu d’une structure ICONINFO . La fonction GetIconInfo remplit la structure avec les coordonnées de point chaud et des informations sur l’image bitmap du masque de bits et l’image bitmap de couleur de l’icône.

Les applications doivent implémenter des icônes personnalisées en tant que ressources et utiliser LoadIcon ou LoadImage, plutôt que de créer l’icône au moment de l’exécution. L’utilisation des ressources d’icônes évite la dépendance de l’appareil, simplifie la localisation et permet aux applications de partager des formes d’icônes.

La fonction CreateIconFromResourceEx permet à une application de parcourir les ressources du système et de créer des icônes et des curseurs basés sur des données de ressources. CreateIconFromResourceEx crée une icône basée sur les données de ressources binaires d’autres fichiers exécutables ou DLL. Une application doit précéder cette fonction d’appels à la fonction LookupIconIdFromDirectoryEx et à plusieurs fonctions de ressource. LookupIconIdFromDirectoryEx retourne l’identificateur des données d’icône les plus appropriées pour l’appareil d’affichage actuel.

Affichage de l’icône

Vous pouvez récupérer l’image d’une icône à l’aide de la fonction GetIconInfo et la dessiner à l’aide de la fonction DrawIconEx . Pour dessiner l’image par défaut d’une icône, spécifiez l’indicateur DI_COMPAT dans l’appel à DrawIconEx. Si vous ne spécifiez pas l’indicateur DI_COMPAT , DrawIconEx dessine l’icône à l’aide de l’image spécifiée par l’utilisateur.

Lorsque le système affiche une icône, il doit extraire l’image d’icône appropriée du fichier .exe ou .dll. Le système utilise les étapes suivantes pour sélectionner l’image d’icône :

  1. Sélectionnez la ressource RT_GROUP_ICON . S’il existe plusieurs ressources de ce type, le système utilise la première ressource répertoriée dans le scrip de ressource.
  2. Sélectionnez l’image RT_ICON appropriée dans la ressource RT_GROUP_ICON . S’il existe plusieurs images, le système utilise les critères suivants pour choisir une image :
    • L’image la plus proche en taille de la taille demandée est choisie.
    • Si plusieurs images de cette taille sont présentes, celle qui correspond à la profondeur de couleur de l’affichage est choisie.
    • Si aucune image ne correspond exactement à la profondeur de couleur de l’affichage, l’image avec la plus grande profondeur de couleur qui ne dépasse pas la profondeur de couleur de l’affichage est choisie. Si tous dépassent la profondeur de couleur, celui qui a la profondeur de couleur la plus faible est choisi.

Remarque

Le système traite toutes les profondeurs de couleur égales ou supérieures à 8 bpp. Par conséquent, il n’est pas avantageux d’inclure une image 16x16 256 couleurs et une image 16x16 couleurs dans la même ressource. Le système choisit simplement la première qu’il rencontre. Lorsque l’affichage est en mode 8 bpp, le système choisit une icône 16 couleurs plutôt qu’une icône de 256 couleurs et affiche toutes les icônes à l’aide de la palette par défaut du système.

 

Pour afficher une icône animée, utilisez un contrôle statique comme indiqué dans le fragment de code suivant.

hIcon = LoadImage(NULL, "ico.ani", IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
SendMessage( hStatic, STM_SETIMAGE, IMAGE_ICON, (LPARAM)(UINT)hIcon);

Destruction de l’icône

Lorsqu’une application n’a plus besoin d’une icône qu’elle a créée à l’aide de la fonction CreateIconIndirect , elle doit détruire l’icône. La fonction DestroyIcon détruit le handle d’icône et libère toute la mémoire utilisée par l’icône. Les applications doivent utiliser cette fonction uniquement pour les icônes créées avec CreateIconIndirect ; il n’est pas nécessaire de détruire les autres icônes.

Duplication d’icônes

La fonction CopyIcon copie un handle d’icône. Cela permet à une application ou à une DLL d’obtenir son propre handle pour une icône appartenant à un autre module. Ensuite, si l’autre module est libéré, l’application qui a copié l’icône pourra toujours utiliser l’icône.

La fonction CopyImage crée une nouvelle icône basée sur l’icône source spécifiée. La nouvelle icône peut être plus grande ou plus petite que l’icône source.

Pour plus d’informations sur l’ajout, la suppression ou le remplacement de ressources d’icône dans des fichiers exécutables (.exe), consultez Ressources.

La fonction DuplicateIcon effectue une copie réelle de l’icône.