Share via


CMetaFileDC, classe

Implémente un métafichier Windows, qui contient une séquence de commandes SQL GDI (Graphics Device Interface) que vous pouvez relire pour créer une image ou du texte voulu.

Syntaxe

class CMetaFileDC : public CDC

Membres

Constructeurs publics

Nom Description
CMetaFileDC ::CMetaFileDC Construit un objet CMetaFileDC.

Méthodes publiques

Nom Description
CMetaFileDC ::Close Ferme le contexte de l’appareil et crée un handle de métafichier.
CMetaFileDC ::CloseEnhanced Ferme un contexte d’appareil de métafichier amélioré et crée un handle de métafichier amélioré.
CMetaFileDC ::Create Crée le contexte de l’appareil de métafichier Windows et l’attache à l’objet CMetaFileDC .
CMetaFileDC ::CreateEnhanced Crée un contexte d’appareil de métafichier pour un métafichier de format amélioré.

Notes

Pour implémenter un métafichier Windows, commencez par créer un CMetaFileDC objet. Appelez le CMetaFileDC constructeur, puis appelez la fonction Créer un membre, qui crée un contexte d’appareil de métafichier Windows et l’attache à l’objet CMetaFileDC .

Envoyez ensuite l’objet la CMetaFileDC séquence de commandes GDI cdc que vous avez l’intention de relire. Seules les commandes GDI qui créent une sortie, telles que MoveTo et LineTo, peuvent être utilisées.

Une fois que vous avez envoyé les commandes souhaitées au métafichier, appelez la Close fonction membre, qui ferme les contextes d’appareil de métafichier et retourne un handle de métafichier. Supprimez ensuite l’objet CMetaFileDC .

CDC ::P layMetaFile peut ensuite utiliser le handle de métafichier pour lire le métafichier à plusieurs reprises. Le métafichier peut également être manipulé par des fonctions Windows telles que CopyMetaFile, qui copient un métafichier sur le disque.

Lorsque le métafichier n’est plus nécessaire, supprimez-le de la mémoire avec la fonction Windows DeleteMetaFile .

Vous pouvez également implémenter l’objet CMetaFileDC afin qu’il puisse gérer à la fois les appels de sortie et les appels GDI d’attributs tels que GetTextExtent. Ce métafichier est plus flexible et peut réutiliser plus facilement le code GDI général, qui se compose souvent d’un mélange d’appels de sortie et d’attribut. La CMetaFileDC classe hérite de deux contextes d’appareil et m_hDCm_hAttribDC, de cdc. Le m_hDC contexte de l’appareil gère tous les appels de sortie GDI cdc et le contexte de l’appareil m_hAttribDC gère tous les appels d’attribut GDI CDC. Normalement, ces deux contextes d’appareil font référence au même appareil. Dans le cas de , le contrôleur de domaine d’attribut CMetaFileDCest défini sur NULL par défaut.

Créez un deuxième contexte d’appareil qui pointe vers l’écran, une imprimante ou un appareil autre qu’un métafichier, puis appelez la SetAttribDC fonction membre pour associer le nouveau contexte d’appareil à m_hAttribDC. Les appels GDI pour les informations seront désormais dirigés vers le nouveau m_hAttribDC. Les appels GDI de sortie vont atteindre m_hDC, qui représente le métafichier.

Pour plus d’informations sur CMetaFileDC, consultez Contextes de l’appareil.

Hiérarchie d'héritage

CObject

CDC

CMetaFileDC

Spécifications

En-tête : afxext.h

CMetaFileDC ::Close

Ferme le contexte de l’appareil de métafichier et crée un handle de métafichier Windows qui peut être utilisé pour lire le métafichier à l’aide de la fonction membre CDC ::P layMetaFile .

HMETAFILE Close();

Valeur de retour

Un HMETAFILE valide si la fonction réussit ; sinon NULL.

Notes

Le handle de métafichier Windows peut également être utilisé pour manipuler le métafichier avec des fonctions Windows telles que CopyMetaFile.

Supprimez le métafichier après l’utilisation en appelant la fonction Windows DeleteMetaFile .

CMetaFileDC ::CloseEnhanced

Ferme un contexte d’appareil de métafichier amélioré et retourne un handle qui identifie un métafichier de format amélioré.

HENHMETAFILE CloseEnhanced();

Valeur de retour

Handle d’un métafichier amélioré, s’il réussit ; sinon NULL.

Notes

Une application peut utiliser le handle de métafichier amélioré retourné par cette fonction pour effectuer les tâches suivantes :

  • Afficher une image stockée dans un métafichier amélioré

  • Créer des copies du métafichier amélioré

  • Énumérer, modifier ou copier des enregistrements individuels dans le métafichier amélioré

  • Récupérer une description facultative du contenu du métafichier à partir de l’en-tête de métafichier amélioré

  • Récupérer une copie de l’en-tête de métafichier amélioré

  • Récupérer une copie binaire du métafichier amélioré

  • Énumérer les couleurs dans la palette facultative

  • Convertir un métafichier de format amélioré en métafichier au format Windows

Lorsque l’application n’a plus besoin du handle de métafichier amélioré, elle doit libérer le handle en appelant la fonction Win32 DeleteEnhMetaFile .

CMetaFileDC ::CMetaFileDC

Construisez un CMetaFileDC objet en deux étapes.

CMetaFileDC();

Notes

Tout d’abord, appelez, puis appelezCMetaFileDCCreate, qui crée le contexte d’appareil de métafichier Windows et l’attache à l’objetCMetaFileDC.

CMetaFileDC ::Create

Construisez un CMetaFileDC objet en deux étapes.

BOOL Create(LPCTSTR lpszFilename = NULL);

Paramètres

lpszFilename
Pointe vers une chaîne de caractères terminée par null. Spécifie le nom de fichier du métafichier à créer. Si lpszFilename a la valeur NULL, un nouveau métafichier en mémoire est créé.

Valeur de retour

Une valeur différente de zéro si la fonction réussit ; sinon, 0.

Notes

Tout d’abord, appelez le constructeur CMetaFileDC, puis appelez Create, qui crée le contexte d’appareil du métafichier Windows et l’attache à l’objet CMetaFileDC .

CMetaFileDC ::CreateEnhanced

Crée un contexte d’appareil pour un métafichier de format amélioré.

BOOL CreateEnhanced(
    CDC* pDCRef,
    LPCTSTR lpszFileName,
    LPCRECT lpBounds,
    LPCTSTR lpszDescription);

Paramètres

pDCRef
Identifie un appareil de référence pour le métafichier amélioré.

lpszFileName
Pointe vers une chaîne de caractères terminée par null. Spécifie le nom de fichier du métafichier amélioré à créer. Si ce paramètre est NULL, le métafichier amélioré est basé sur la mémoire et son contenu est perdu lorsque l’objet est détruit ou lorsque la fonction Win32 DeleteEnhMetaFile est appelée.

lpBounds
Pointe vers une structure de données RECT ou un objet CRect qui spécifie les dimensions des unités HIMETRIC (incréments de .01 millimètres) de l’image à stocker dans le métafichier amélioré.

lpszDescription
Pointe vers une chaîne sans fin qui spécifie le nom de l’application qui a créé l’image, ainsi que le titre de l’image.

Valeur de retour

Handle du contexte de l’appareil pour le métafichier amélioré, s’il réussit ; sinon NULL.

Notes

Ce contrôleur de domaine peut être utilisé pour stocker une image indépendante de l’appareil.

Windows utilise l’appareil de référence identifié par le paramètre pDCRef pour enregistrer la résolution et les unités de l’appareil sur lequel une image apparaît initialement. Si le paramètre pDCRef a la valeur NULL, il utilise l’appareil d’affichage actuel pour référence.

Les membres gauche et supérieur de la RECT structure de données pointées par le paramètre lpBounds doivent être inférieurs respectivement aux membres de droite et inférieur. Les points le long des bords du rectangle sont inclus dans l’image. Si lpBounds a la valeur NULL, l’interface d’appareil graphique (GDI) calcule les dimensions du plus petit rectangle qui peut entourer l’image dessinée par l’application. Le paramètre lpBounds doit être fourni dans la mesure du possible.

La chaîne pointée par le paramètre lpszDescription doit contenir un caractère Null entre le nom de l’application et le nom de l’image et doit se terminer par deux caractères null ( par exemple, « XYZ Graphics Editor\0Bald Eagle\0\0 », où \0 représente le caractère null. Si lpszDescription a la valeur NULL, il n’existe aucune entrée correspondante dans l’en-tête de métafichier amélioré.

Les applications utilisent le contrôleur de domaine créé par cette fonction pour stocker une image graphique dans un métafichier amélioré. Le handle identifiant ce contrôleur de domaine peut être transmis à n’importe quelle fonction GDI.

Une fois qu’une application stocke une image dans un métafichier amélioré, elle peut afficher l’image sur n’importe quel appareil de sortie en appelant la CDC::PlayMetaFile fonction. Lors de l’affichage de l’image, Windows utilise le rectangle vers lequel pointe le paramètre lpBounds et les données de résolution de l’appareil de référence pour positionner et mettre à l’échelle l’image. Le contexte de l’appareil retourné par cette fonction contient les mêmes attributs par défaut associés à n’importe quel nouveau contrôleur de domaine.

Les applications doivent utiliser la fonction Win32 GetWinMetaFileBits pour convertir un métafichier amélioré au format de métafichier Windows plus ancien.

Le nom de fichier du métafichier amélioré doit utiliser le fichier . Extension EMF.

Voir aussi

CDC, classe
Graphique hiérarchique