<Return[G]><Top>

GetWinMetaFileBits

Declare Function Api_GetWinMetaFileBits& Lib "gdi32" Alias "GetWinMetaFileBits" (ByVal hemf&, ByVal cbBuffer&, lpbBuffer As Byte, ByVal fnMapMode&, ByVal hdcRef&)

Declare Function GetWinMetaFileBits Lib "gdi32" Alias "GetWinMetaFileBits" (ByVal hemf As Long, ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal fnMapMode As Long, ByVal hdcRef As Long) As Long

拡張形式メタファイルに含まれるレコードを Windows 形式のレコードに変換し、指定したバッファに格納する。

パラメータ
hemf
    拡張形式メタファイルのハンドルを指定する。
cbBuffer
    変換後のレコードを受け取るバッファのサイズをバイト数で指定する。
lpbBuffer
    変換後のレコードを受け取るバッファへのポインタを指定する。

    NULL を指定すると、変換後のレコードを格納するために必要なバイト数が返る。
fnMapMode
    変換後のメタファイルで使うマッピングモードを指定する。
hdcRef
    基準デバイスコンテキストのハンドルを指定する。

戻り値
    関数が成功すると、lpbBuffer パラメータに NULL を指定した場合は変換後のレコードを格納するために必要なバイト数、lpbBuffer パラメ

    ータに有効なポインタを指定した場合はメタファイルのデータのサイズ(バイト数)が返る。
    関数が失敗すると、0 が返る。
    Windows NT/2000: 拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    この関数は拡張形式メタファイルを Windows 形式のメタファイルに変換し、古い形式を認識するアプリケーションでそのピクチャを表示できる

    ようにする。
    変換後のメタファイルの解像度は、基準デバイスコンテキストによって決まる。
    GetWinMetaFileBits 関数は、拡張形式メタファイルのハンドルを無効にしない。不要になったハンドルは、DeleteEnhMetaFile 関数を使

    って解放する。
    Windows 形式メタファイルの制約により、取り出したメタファイルの内容に一部の情報が含まれないことがある。たとえば、拡張形式メタファ

    イル内の PolyBezier 関数の呼び出しは、Windows 形式メタファイルでは Polyline 関数の呼び出しに変換されることがある。これは、 

    Windows 形式の場合、PolyBezier 関数と同じ働きをする関数がないためである。
    16 ビット版 Windows アプリケーションは、Windows 形式メタファイルに格納されたピクチャのビューポイントの原点と範囲を定義する。その

    結果、GetWinMetaFileBits 関数を使って作成した Windows 形式のレコードは、SetViewportOrgEx 関数と SetViewportExtEx 関数を

    含まない。一方、GetWinMetaFileBits 関数は、SetWindowExtEx 関数と SetMapMode 関数の Windows 形式のレコードを作成する。
    スケール変更が可能な Windows 形式メタファイルを作成するときは、fnMapMode パラメータに MM_ANISOTROPIC を指定する。
    メタファイルピクチャの左上隅はいつでも基準デバイスの原点にマップされる。