Partager via


Formats de fichier de ressources

Cette section décrit le format du fichier de ressources binaire créé par le compilateur de ressources en fonction du contenu du fichier de définition de ressource. Ce fichier a généralement une extension .res. L’éditeur de liens reformate le fichier .res dans un fichier objet de ressource, puis le lie au fichier exécutable d’une application.

Un fichier de ressources binaire se compose d’un certain nombre d’entrées de ressource concaténées. Chaque entrée se compose d’un en-tête de ressource et des données pour cette ressource. Un en-tête de ressource est DWORD-aligné dans le fichier et se compose des éléments suivants :

  • DWORD qui contient la taille de l’en-tête de ressource
  • Une DWORD qui contient la taille des données de ressource
  • Type de ressource
  • Nom de la ressource
  • Informations supplémentaires sur les ressources

La structure RESOURCEHEADER décrit le format de cet en-tête. Les données de la ressource suivent l’en-tête de ressource et sont spécifiques à chaque type de ressource. Certaines ressources utilisent également une structure d’en-tête de groupe spécifique aux ressources pour fournir des informations sur un groupe de ressources.

Ressources de table accélérateur

Une table accélérateur est une entrée de ressource dans un fichier de ressources. Il n’a pas d’en-tête de groupe. Une structure ACCELTABLEENTRY décrit chaque entrée dans la table accélérateur. Plusieurs tables accélérateurs sont autorisées.

Ressources de curseur et d’icône

Le système gère chaque icône et curseur en tant que fichier unique. Toutefois, ils sont stockés dans des fichiers .res et dans des fichiers exécutables sous la forme d’un groupe de ressources d’icône RT_GROUP_ICON ou d’un groupe RT_GROUP_CURSOR de ressources de curseur. Les formats de fichier des ressources d’icône et de curseur sont similaires. Dans le fichier .res, un en-tête de groupe de ressources suit tous les composants d’icône ou de groupe de curseurs individuels.

L’en-tête de groupe pour les ressources d’icône et de curseur se compose d’une structure NEWHEADER plus une ou plusieurs structures RESDIR. Il existe une structure RESDIR pour chaque icône ou curseur. L’en-tête de groupe contient les informations dont une application doit sélectionner l’icône ou le curseur appropriés à afficher. L’en-tête de groupe et les données qui se répètent pour chaque icône ou curseur du groupe ont une longueur fixe. Cela permet à l’application d’accéder de manière aléatoire aux informations.

Le format de chaque icône RT_ICON ou composant de ressource de curseur RT_CURSOR ressemble étroitement au format du fichier .ico/.cur. Chaque image est stockée dans une structure BITMAPINFO suivie des bits DIB (Color Device-Independent Bitmap) du masque XOR de l’icône. Les bits DIB monochromes du masque AND suivent les bits DIB de couleur. La différence significative entre les curseurs et les icônes est que les curseurs ont une structure LOCALHEADER avec un point d’accès inséré avant les données bitmap, tandis que les icônes ne le font pas.

Étant donné que l’icône windows Vista RT_ICON ou RT_CURSOR ressource de curseur peut contenir des données d’image compressées PNG.

Ressources de la boîte de dialogue

Une boîte de dialogue est également une entrée de ressource dans le fichier de ressources. Il se compose d’une structure d’en-tête de boîte de dialogue DLGTEMPLATE plus une structure DLGITEMTEMPLATE pour chaque contrôle de la boîte de dialogue. Les structures DLGTEMPLATEEX et DLGITEMTEMPLATEEX décrivent le format des ressources de boîte de dialogue étendues.

Ressources de police

Les polices sont stockées dans le fichier de ressources en tant que groupe de ressources. Les polices individuelles constituent un groupe de polices. Instruction FONT instruction de définition de ressource dans le . Le fichier RC définit chaque police. Chaque police individuelle de la ressource se compose du contenu complet du fichier .fnt associé. Une structure FONTGROUPHDR suit tous les composants de police individuels dans le fichier .res.

Les ressources de police ne sont pas ajoutées aux ressources d’une application spécifique. Au lieu de cela, ils sont normalement ajoutés aux fichiers exécutables qui ont une extension .fon. Ces fichiers sont généralement des DLL de ressources uniquement plutôt que des applications.

Une ressource de menu se compose d’une structure MENUHEADER suivie d’une ou plusieurs NORMALMENUITEM ou STRUCTURES POPUPMENUITEM, une pour chaque élément de menu dans le modèle de menu. Les structures MENUEX_TEMPLATE_HEADER et MENUEX_TEMPLATE_ITEM décrivent le format des ressources de menu étendues.

Ressources de la table de messages

Une table de messages est une ressource qui contient du texte mis en forme pour l’affichage en tant que message d’erreur ou dans une zone de message. La structure principale d’une ressource de table de messages est la structure MESSAGE_RESOURCE_DATA.

Ressources de version

La structure principale d’une ressource de version est la structure VS_FIXEDFILEINFO. Les structures supplémentaires incluent la structure VarFileInfo pour stocker les données d’informations de langue et StringFileInfo pour les informations de chaîne définies par l’utilisateur. Toutes les chaînes d’une ressource de version sont au format Unicode. Chaque bloc d’informations est aligné sur une limite DWORD.