次の方法で共有


CMetaFileDC::CreateEnhanced

更新 : 2007 年 11 月

拡張メタファイルのデバイス コンテキストを作成します。

BOOL CreateEnhanced(
   CDC* pDCRef,
   LPCTSTR lpszFileName,
   LPCRECT lpBounds,
   LPCTSTR lpszDescription 
);

パラメータ

  • pDCRef
    拡張メタファイルの参照デバイスを識別します。

  • lpszFileName
    NULL で終わる文字列へのポインタ。作成する拡張メタファイルのファイル名を指定します。このパラメータが NULL のときは、拡張メタファイルがメモリ上に作成され、オブジェクトが破棄されたり、Win32 DeleteEnhMetaFile 関数が呼び出されると内容が失われます。

  • lpBounds
    拡張メタファイルに格納される画像の大きさを HIMETRIC 単位 (0.01 mm 単位) で指定する RECT データ構造体または CRect オブジェクトへのポインタ。

  • lpszDescription
    画像のタイトルや画像を作成したアプリケーション名を指定する NULL で終わる文字列へのポインタ。

戻り値

正常終了した場合は、拡張メタファイルのデバイス コンテキストのハンドルを返します。それ以外の場合は NULL を返します。

解説

この DC を使ってデバイスに依存しない画像を格納できます。

Windows は、パラメータ pDCRef で識別される参照デバイスを使って、もともと画像が表示されていたデバイスの解像度や単位を記録します。パラメータ pDCRef が NULL のときは、現在のディスプレイ デバイスを参照デバイスに使います。

パラメータ lpBounds が指す RECT 構造体の left メンバと top メンバは、それぞれ right メンバと bottom メンバより小さくする必要があります。四角形の辺上にある点は、画像に含まれます。パラメータ lpBounds が NULL のときは、グラフィック デバイス インターフェイス (GDI) は、アプリケーションが描画した画像に外接する最小の四角形の寸法を計算します。パラメータ lpBounds はできる限り指定するようにしてください。

パラメータ lpszDescription で指される文字列は、アプリケーション名と画像名の間に NULL 文字が必要です。さらに文字列の最後に、2 つの NULL 文字が必要です。たとえば、"XYZ Graphics Editor\0Bald Eagle\0\0" とします。\0 は NULL 文字を表します。パラメータ lpszDescription が NULL のときは、拡張メタファイルのヘッダーに対応するエントリがありません。

アプリケーションはこの関数で作成された DC を使って、拡張メタファイルにグラフィック画像を格納します。この DC を識別するハンドルは、任意の GDI 関数に渡せます。

アプリケーションが拡張メタファイルに画像を格納した後は、CDC::PlayMetaFile 関数を呼び出して任意の出力デバイスに画像を表示できます。画像を表示するときに、Windows は画像の位置とスケールを決めるために、パラメータ lpBounds で指される四角形と参照デバイスの解像度データを使います。この関数が返すデバイス コンテキストは、任意の新しい DC に関連付けられたのと同じ既定の属性を保持します。

アプリケーションは拡張メタファイルを古い Windows メタファイル フォーマットに変換するのに Win32 GetWinMetaFileBits 関数を使う必要があります。

拡張メタファイルのファイル名の拡張子は、.EMF です。

必要条件

ヘッダー : afxext.h

参照

参照

CMetaFileDC クラス

階層図

CMetaFileDC::CloseEnhanced

CDC::PlayMetaFile

CloseEnhMetaFile

DeleteEnhMetaFile

GetEnhMetaFileDescription

GetEnhMetaFileHeader

GetWinMetaFileBits

PlayEnhMetaFile

その他の技術情報

CMetaFileDC のメンバ