Enregistrements métafichiers améliorés
Un métafichier amélioré est un tableau d’enregistrements. Un enregistrement de métafichier est une structure ENHMETARECORD de longueur variable. Au début de chaque enregistrement de métafichier amélioré se trouve une structure EMR , qui contient deux membres. Le premier membre, iType, identifie le type d’enregistrement, c’est-à-dire la fonction GDI dont les paramètres sont contenus dans l’enregistrement. Étant donné que les structures sont de longueur variable, l’autre membre, nSize, contient la taille de l’enregistrement. Immédiatement après le membre nSize se trouvent les paramètres restants, le cas échéant, de la fonction GDI. Le reste de la structure contient des données supplémentaires qui dépendent du type d’enregistrement.
Le premier enregistrement d’un métafichier amélioré est toujours la structure ENHMETAHEADER , qui est l’en-tête enhanced-metafile. L’en-tête spécifie les informations suivantes :
- Taille du métafichier, en octets
- Dimensions du cadre d’image, en unités d’appareil
- Dimensions du cadre de l’image, en unités de 0,01 millimètre
- Nombre d’enregistrements dans le métafichier
- Décalage vers une description de texte facultative
- Taille de la palette facultative
- Résolution de l’appareil d’origine, en pixels
- Résolution de l’appareil d’origine, en millimètres
Une description de texte facultative peut suivre l’enregistrement d’en-tête. La description du texte décrit l’image et le nom de l’auteur. La palette facultative spécifie les couleurs utilisées pour créer le métafichier amélioré. Les enregistrements restants identifient les fonctions GDI utilisées pour créer l’image. La sortie hexadécimale suivante correspond à un enregistrement généré pour un appel à la fonction SetMapMode .
00000011 0000000C 00000004
La valeur 0x00000011 spécifie le type d’enregistrement (correspond à la constante EMR_SETMAPMODE définie dans le fichier Wingdi.h). La valeur 0x0000000C spécifie la longueur de l’enregistrement, en octets. La valeur 0x00000004 identifie le mode de mappage (correspond à la constante MM_LOENGLISH définie dans la fonction SetMapMode ).
Pour obtenir la liste des types d’enregistrements supplémentaires, consultez Structures de métafichiers.