HDC CreateEnhMetaFile( HDC hDC, LPCTSTR MetaFileName, CONST RECT *r, LPCTSTR Description);
Declare Function CreateEnhMetaFile Lib "gdi32" Alias "CreateEnhMetaFileA" ( _ ByVal hDC As Long, _ ByVal MetaFileName As String, _ ByRef r As RECT, _ ByVal Description As String) As Long
返却されたデバイスコンテキストに対してGDI関数を呼び出すことにより、メタファイルを構成する図形が記録される。描画結果を元に拡張メタファイルを作成するには、CloseEnhMetaFileを使用する。
引数の意味は以下の通り。
| hDC | 拡張メタファイル用デバイスコンテキスト作成時に、デバイスの解像度などを決定するために参照されるデバイスを示すデバイスコンテキストのハンドル。NULLを指定可能。 |
| MetaFileName | 拡張メタファイルの保存先のファイル名。NULLを指定した場合、作成される拡張メタファイルはメモリ上の拡張メタファイルとなる。 |
| r | 拡張メタファイルの描画領域。0.01ミリ単位で指定する。NULLを指定可能。 |
| Description | メタファイルの作成元アプリケーション名および画像名を表すMULTI_SZ文字列。NULLを指定可能。 |
戻り値は、作成された拡張メタファイル用デバイスコンテキストのハンドルである。関数の実行に失敗した場合、NULLが返される。
'拡張メタファイルの作成
Private Sub Command1_Click()
Dim hDC As Long '拡張メタファイル用デバイスコンテキストのハンドル
Dim hEmf As Long '拡張メタファイルのハンドル
Dim r As RECT ' 拡張メタファイルの描画領域
Dim Description As String 'アプリケーションと画像名
'拡張メタファイルの描画領域を設定
r.Left = 0
r.Top = 0
r.Right = 10000
r.Bottom = 10000
'作成元アプリケーションと画像名の設定
Description = "sample application" & vbNullChar & "test picture" & vbNullChar & vbNullChar
'拡張メタファイル用デバイスコンテキストを作成
hDC = CreateEnhMetaFile(0, "c:\pic\test.emf", r, Description)
'円を描画
SetMapMode hDC, MM_HIMETRIC
Ellipse hDC, 0, 0, 10000, -10000
'拡張メタファイル用デバイスコンテキストのクローズ
hEmf = CloseEnhMetaFile(hDC)
'拡張メタファイルのクローズ
DeleteEnhMetaFile hEmf
End Sub