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 ressources 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 aligné sur DWORD dans le fichier et se compose des éléments suivants :
- DWORD qui contient la taille de l’en-tête de ressource
- 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 d’accélérateur
Une table d’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 d’accélérateurs. Plusieurs tables d’accélérateur sont autorisées.
Ressources de curseur et d’icône
Le système gère chaque icône et chaque curseur sous la forme d’un 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 du groupe d’icônes ou 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 a besoin pour sélectionner l’icône ou le curseur approprié à 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 de RT_ICON ou RT_CURSOR composant de ressource de curseur ressemble étroitement au format du fichier .ico/.cur. Chaque image est stockée dans une structure BITMAPINFO suivie des bits bitmap indépendants de la couleur (DIB) 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 chaud inséré avant les données bitmap, contrairement aux icônes.
Étant donné que Windows Vista RT_ICON icône ou RT_CURSOR ressource de curseur peut contenir des données d’image compressées png.
Ressources de 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 dans 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. Une instruction de définition de ressource d’instruction FONT dans le . Le fichier RC définit chaque police. Chaque police 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.
Ressources de menu
Une ressource de menu se compose d’une structure MENUHEADER suivie d’une ou plusieurs structures NORMALMENUITEM ou 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 étendu.
Ressources de table de messages
Une table de messages est une ressource qui contient du texte mis en forme à afficher en tant que message d’erreur ou dans une zone de message. La structure main dans une ressource de table de messages est la structure MESSAGE_RESOURCE_DATA.
Ressources de version
La structure main dans une ressource de version est la structure VS_FIXEDFILEINFO. D’autres structures 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 .