GdipCreateMetafileFromWmf()



Syntaxe
Resultat.i = GdipCreateMetafileFromWmf(hWmf.i, deleteWmf.i, @wmfPlaceableFileHeader.WmfPlaceableFileHeader, @*metafile)
Paramètres
hWmf.i

[in] Handle de la fenêtre du métafichier.

deleteWmf.i

[in] Valeur booléenne qui indique si le Handle du métafichier est supprimé lorsque le Metafile est supprimé (paramètre hWmf.l)

   #True : le Handle est supprimé.

   #False : le Handle n'est pas supprimé.

*wmfPlaceableFileHeader.WmfPlaceableFileHeader

[in] Variable de type WmfPlaceableFileHeader qui spécifie un preheader précédant l'en-tête de métafichier. Les métafichiers positionnable (Placeable metafile) sont des fichiers WMF qui contiennent un preheader précédant l'en-tête de métafichier. Le preheader contient des informations complémentaires pour l'en-tête du métafichier. Ce paramètre peut être mis à #Null.

*metafile

[out] *metafile recevra un pointeur sur l'objet metafile créé.

Description

Cette fonction est classé par Micosoft dans les fonctions Graphics mais je l'ai classée dans les métafiles.

Cette fonction permet de créer un métafichier en mémoire basé sur un fichier WMF(Windows Metafile Format).

Cette fonction pemet à GDI+ de devenir le propriétaire du Handle de la fenêtre du métafichier qui ne doit pas être utilisé par d'autres parties du code jusqu'à que le métafichier soit détruit ou qu'il soit hors de la portée (thread ?).

A chaque création d'un objet metafile doit correspondre un appel de la fonction GdipDisposeImage() qui permet de libérer les ressources associées à l'objet.

Le premier exemple permet d'ouvrir un fichier WMF placeable (existant sur le disque) et d'afficher le contenu dans la fenêtre en réduisant la taille si une des dimensions est supérieure à 200 pixels (la proportionnalité est gardée), le Handle est automatiquement supprimé lors de la destruction du métafichier (deleteWmf vaut #True). Le paramètre hWmf est retrouvé avec la fonction GdipGetHemfFromMetafile(), même si la fonction est donné pour retrouver le Handle d'une fenêtre d'un fichier au format Emf (pas de fonction GdipGetHwmfFromMetafile()).

Le second exemple est presque identique mais l'API DeleteMetaFile est utilisée pour détruire le Handle (deleteWmf vaut #False). L'API DeleteEnhMetaFile échoue pour détruire le Handle (retourne 0).

Résultat de la fonction
Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.
PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium