UDF > WinAPIEx > GDI > MetaFiles >


_WinAPI_CloseEnhMetaFile

Ferme un contexte de périphérique de métafichier étendu et retourne le handle qui identifie un métafichier au format étendu

#include <WinAPIGdi.au3>
_WinAPI_CloseEnhMetaFile ( $hDC )

Paramètre

$hDC Handle du contexte de périphérique de métafichier étendu.

Valeur de retour

Succès: Retourne le handle du métafichier étendu.
Échec: Retourne 0.

Remarque

Lorsque l'application n'a plus besoin du handle du métafichier étendu, il faut le supprimer en appelant la fonction _WinAPI_DeleteEnhMetaFile().

En relation

_WinAPI_DeleteEnhMetaFile

Voir aussi

Consultez CloseEnhMetaFile dans la librairie MSDN.

Exemple

#include <MsgBoxConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIHObj.au3>
#include <WinAPIMisc.au3>

Global Const $sEmf = @TempDir & '\Test.emf'

If FileExists($sEmf) Then
    If MsgBox(BitOR($MB_YESNOCANCEL, $MB_ICONQUESTION, $MB_DEFBUTTON2, $MB_SYSTEMMODAL), 'Création du Métafichier Etendu', $sEmf & ' existe déjà.'& @CRLF & @CRLF & 'Voulez-vous le remplacer?') <> 6 Then
        Exit
    EndIf
    If Not FileDelete($sEmf) Then
        MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Création Métafichier Etendu', 'Impossible de supprimer le fichier.')
        Exit
    EndIf
EndIf

; Crée un contexte de périphérique pour un métafichier au format étendu
Global $tRECT = _WinAPI_CreateRect(0, 0, 250, 250)
Global $hDC = _WinAPI_CreateEnhMetaFile(0, $tRECT, 1, @TempDir & '\Test.emf')

; Dessine les objets
Global $hBrush = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($DC_BRUSH))
Global $hPen = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($NULL_PEN))
_WinAPI_SetDCBrushColor($hDC, 0xAA0000)
_WinAPI_Rectangle($hDC, $tRECT)
_WinAPI_SetDCBrushColor($hDC, 0xFFFFFF)

; Définit une étoile à 5 branches
Global $aPoint[10][2]
Calcule($aPoint)
Global $hRgn = _WinAPI_CreatePolygonRgn($aPoint)
_WinAPI_OffsetRgn($hRgn, 0, 6)
_WinAPI_PaintRgn($hDC, $hRgn)

; Supprime les objets
_WinAPI_SelectObject($hDC, $hBrush)
_WinAPI_SelectObject($hDC, $hPen)
Global $hEmf = _WinAPI_CloseEnhMetaFile($hDC)
_WinAPI_DeleteEnhMetaFile($hEmf)
_WinAPI_DeleteObject($hRgn)

; Affiche le fichier .emf créé dans Microsoft Paint
If FileExists($sEmf) Then
    ShellExecute(@SystemDir & '\mspaint.exe', $sEmf)
EndIf

func Calcule(ByRef $aPoint)
    Local $x = 0, $y = 90, $size = 95, $cap = 0
    Local Const $pi = 4*atan(1)

    $aPoint[0][0] = $x
    $aPoint[0][1] = $y

    for $i = 1 to 9
        $x += $size * Cos($cap)
        $y += $size * Sin($cap)
        $aPoint[$i][0] = Round($x)
        $aPoint[$i][1] = Round($y)
        $cap += (Mod($i,2) = 0 ? 4*$pi/5 : -2*$pi/5)
    Next
EndFunc   ;==>Calcule