CopyMetaFile Windowsメタファイルを複製

Cの宣言:

HMETAFILE CopyMetaFile(
	HMETAFILE hWmf,
	LPCTSR FileName);

VBの宣言:

Declare Function CopyMetaFile Lib "gdi32" Alias "CopyMetaFileA" ( _
	ByVal hWmf As Long, _
	ByVal FileName As String) As Long

説明:

Windowsメタファイルを複製する。

引数の意味は以下の通り。
hWmf 複製元のWindowsメタファイルのハンドル。
FileName 複製先のWindowsメタファイルのファイル名。NULLを指定した場合、メモリ上のWindowsメタファイルとして複製される。

戻り値は、複製結果のWindowsメタファイルのハンドルである。関数の実行に失敗した場合、NULLが返される。

VBのサンプル:

"c:\pic\test.emf"という拡張メタファイルをWindowsメタファイルに変換し、"c:\pic\test.wmf"というファイルに保存する。
' 拡張メタファイルをWindowsメタファイルに変換
Private Sub Command1_Click()

    Dim hEnhMetaFile As Long '拡張メタファイルのハンドル
    Dim hMemWinMetaFile As Long 'メモリ上のWindowsメタファイルのハンドル
    Dim hFileWinMetaFile As Long 'ファイル上のWindowsメタファイルのハンドル
    Dim Buf(10000) As Byte 'Windowsメタファイルデータの取得バッファ
    Dim BufSize As Long 'Bufに格納されたデータのサイズ
    
    '拡張メタファイルのオープン
    hEnhMetaFile = GetEnhMetaFile("c:\pic\test.emf")
    
    'Windowsメタファイル形式でデータを取得
    BufSize = GetWinMetaFileBits(hEnhMetaFile, 10000, Buf(0), MM_TEXT, Me.hDC)
    
    'Windowsメタファイルの作成
    hMemWinMetaFile = SetMetaFileBitsEx(BufSize, Buf(0))
    
    'ファイルに保存
    hFileWinMetaFile = CopyMetaFile(hMemWinMetaFile, "c:\pic\test.wmf")
    
    'メタファイルのクローズ
    DeleteMetaFile hFileWinMetaFile
    DeleteMetaFile hMemWinMetaFile
    DeleteEnhMetaFile hEnhMetaFile

End Sub


(original text:2000/01/27 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。