Metafile::EmfToWmfBits, méthode (gdiplusheaders.h)

Convertit un métafichier au format amélioré en un métafichier WMF (Windows Metafile Format) et stocke les enregistrements convertis dans une mémoire tampon spécifiée.

Syntaxe

UINT EmfToWmfBits(
  [in]           HENHMETAFILE hemf,
  [in]           UINT         cbData16,
  [out]          LPBYTE       pData16,
  [in, optional] INT          iMapMode,
  [in, optional] INT          eFlags
);

Paramètres

[in] hemf

Type : HENHMETAFILE

Gérez en métafichier au format amélioré qui doit être converti.

[in] cbData16

Type : UINT

Entier non signé qui spécifie le nombre d’octets dans la mémoire tampon vers laquelle pointe le paramètre pData16 .

[out] pData16

Type : LPBYTE

Pointeur vers une mémoire tampon qui reçoit les enregistrements convertis. Si pData16 a la valeur NULL, Metafile::EmfToWmfBits retourne le nombre d’octets requis pour stocker les enregistrements de métafichier convertis.

[in, optional] iMapMode

Type : INT

Optionnel. Spécifie le mode de mappage à utiliser dans le métafichier converti. Pour obtenir la liste des modes de mappage possibles, consultez SetMapMode. La valeur par défaut est MM_ANISOTROPIC.

[in, optional] eFlags

Type : EmfToWmfBitsFlags

Optionnel. Élément de l’énumération EmfToWmfBitsFlags qui spécifie les options de la conversion. La valeur par défaut est EmfToWmfBitsFlagsDefault.

Valeur retournée

Type : UINT

Si la méthode réussit et que le pointeur de la mémoire tampon est NULL, la valeur de retour correspond au nombre d’octets requis pour stocker les enregistrements convertis. Si la méthode réussit et que le pointeur de mémoire tampon est un pointeur valide, la valeur de retour correspond à la taille des données de métafichier en octets. Si la méthode échoue, la valeur de retour est zéro.

Notes

Lorsque vous appelez Metafile::EmfToWmfBits pour déterminer la taille de la mémoire tampon requise, vous devez passer la même valeur pour eFlags que vous transmettez ultérieurement lorsque vous appelez Metafile::EmfToWmfBits pour effectuer la conversion. Sinon, la taille retournée par le premier appel à Metafile::EmfToWmfBits sera incorrecte.

Cette méthode ne peut pas convertir les métafichiers de type EmfTypeEmfPlusOnly. Si vous utilisez cette méthode pour convertir un métafichier de type EmfTypeEmfPlusDual, les enregistrements EMF (Enhanced Metafile) dans ce métafichier sont convertis, mais les enregistrements EMF+ ne sont pas convertis.

Cette méthode convertit un métafichier amélioré en un métafichier WMF afin que son image puisse être affichée dans une application qui reconnaît l’ancien format.

La méthode Metafile::EmfToWmfBits n’invalide pas le handle de métafichier amélioré. Appelez la fonction DeleteEnhMetaFile pour libérer le handle quand il n’est plus nécessaire.

Pour créer un métafichier WMF scalable, spécifiez MM_ANISOTROPIC comme paramètre iMapMode .

Exemples

L’exemple suivant convertit un métafichier au format amélioré en métafichier WMF. Le dernier paramètre passé à Metafile::EmfToWmfBits spécifie que le métafichier au format amélioré est incorporé en tant que commentaire dans le métafichier converti.

// Construct a Metafile object from an existing EMF disk file.
Metafile myMetafile(L"SourceMetafile.emf");

// Get a handle to the EMF metafile.
HENHMETAFILE hEmf = myMetafile.GetHENHMETAFILE();

// Determine the size of the buffer that will receive the converted records.
UINT size = Metafile::EmfToWmfBits(
   hEmf, 
   0, 
   NULL,
   MM_ANISOTROPIC,
   EmfToWmfBitsFlagsEmbedEmf);

// Allocate a buffer to receive the converted records.
BYTE* buffer = new BYTE[size];

// Convert the EMF records to WMF records.
INT convertedSize = Metafile::EmfToWmfBits(
   hEmf, 
   size,
   buffer, 
   MM_ANISOTROPIC,
   EmfToWmfBitsFlagsEmbedEmf);

// Get a handle to the converted metafile.
HMETAFILE hmf = SetMetaFileBitsEx(size, buffer);

// Write the WMF metafile to a disk file.
CopyMetaFile(hmf, TEXT("ConvertedMetafile.wmf"));

DeleteMetaFile(hmf);
DeleteEnhMetaFile(hEmf);
delete[] buffer;

Configuration requise

   
Client minimal pris en charge Windows XP, Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête gdiplusheaders.h (inclure Gdiplus.h)
Bibliothèque Gdiplus.lib
DLL Gdiplus.dll

Voir aussi

EmfType

GetWinMetaFileBits

Metafile

Métafichiers