HENHMETAFILE SetWinMetaFileBits( UINT ByteArraySize, CONST BYTE *ByteArray, HDC hDC, CONST METAFILEPICT *Pict);
Declare Function SetWinMetaFileBits Lib "gdi32" ( _ ByVal ByteArraySize As Long, _ ByRef ByteArray As Byte, _ ByVal hDC As Long, _ ByRef Pict As METAFILEPICT) As Long
引数の意味は以下の通り。
| ByteArraySize | ByteArrayのサイズ。 |
| ByteArray | 作成元のWindowsメタファイルのデータ。 |
| hDC | 解像度などを決定する際に参照されるデバイス。NULLを指定可能。 |
| Pict | マッピングモードや画像のサイズなどを指定する情報。NULLを指定可能。 |
戻り値は、作成結果の拡張メタファイルのハンドルである。関数の実行に失敗した場合、NULLが返される。
' Windowsメタファイルを拡張メタファイルに変換
Private Sub Command1_Click()
Dim hWinMetaFile 'Windowsメタファイルのハンドル
Dim hMemEnhMetaFile 'メモリ上の拡張メタファイルのハンドル
Dim hFileEnhMetaFile 'ファイル上の拡張メタファイルのハンドル
Dim Buf(10000) As Byte 'Windowsメタファイルデータの取得バッファ
Dim BufSize As Long 'Bufに格納されたデータのサイズ
Dim Pict As METAFILEPICT
'Windowsメタファイルのオープン
hWinMetaFile = GetMetaFile("c:\pic\test.wmf")
'メタファイルデータの取得
BufSize = GetMetaFileBitsEx(hWinMetaFile, 10000, Buf(0))
'拡張メタファイルを作成
Pict.mm = MM_TEXT
Pict.xExt = 300
Pict.yExt = 300
Pict.hMF = hWinMetaFile
hMemEnhMetaFile = SetWinMetaFileBits(BufSize, Buf(0), Me.hDC, Pict)
'ファイルに保存
hFileEnhMetaFile = CopyEnhMetaFile(hMemEnhMetaFile, "c:\pic\test.emf")
'メタファイルのクローズ
DeleteEnhMetaFile hFileEnhMetaFile
DeleteEnhMetaFile hMemEnhMetaFile
DeleteMetaFile hWinMetaFile
End Sub