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