CMetaFileDC クラス

イメージやテキストを自由に作成するための一連のグラフィック デバイス インターフェイス (GDI) コマンドを含む Windows のメタファイルを実装します。

構文

class CMetaFileDC : public CDC

メンバー

パブリック コンストラクター

名前 説明
CMetaFileDC::CMetaFileDC CMetaFileDC オブジェクトを構築します。

パブリック メソッド

名前 説明
CMetaFileDC::Close デバイス コンテキストを閉じ、メタファイル ハンドルを作成します。
CMetaFileDC::CloseEnhanced 拡張メタファイル デバイス コンテキストを閉じ、拡張メタファイル ハンドルを作成します。
CMetaFileDC::Create Windows メタファイル デバイス コンテキストを作成し、オブジェクトに CMetaFileDC アタッチします。
CMetaFileDC::CreateEnhanced 拡張形式のメタファイルのメタファイル デバイス コンテキストを作成します。

解説

Windows メタファイルを実装するには、まずオブジェクトを CMetaFileDC 作成します。 コンストラクターをCMetaFileDC呼び出し、Create メンバー関数を呼び出します。これにより、Windows メタファイル デバイス コンテキストが作成され、オブジェクトにCMetaFileDCアタッチされます。

次に、再生する CMetaFileDC CDC GDI コマンドのシーケンスをオブジェクトに送信します。 出力を作成する GDI コマンド (例 MoveTo : and LineTo) のみを使用できます。

必要なコマンドをメタファイルに送信した後、メタファイル デバイス コンテキストを Close 閉じてメタファイル ハンドルを返すメンバー関数を呼び出します。 次に、オブジェクトを CMetaFileDC 破棄します。

CDC::P layMetaFile は、メタファイル ハンドルを使用してメタファイルを繰り返し再生できます。 メタファイルは、メタファイルをディスクにコピーする CopyMetaFile などの Windows 関数でも操作できます。

メタファイルが不要になったら、DeleteMetaFile Windows 関数を使用してメモリから削除します。

出力呼び出しと属性 GDI GetTextExtent呼び出しの両方を処理できるように、オブジェクトを実装CMetaFileDCすることもできます。 このようなメタファイルは柔軟性が高く、多くの場合、出力と属性呼び出しの組み合わせで構成される一般的な GDI コードをより簡単に再利用できます。 このクラスはCMetaFileDC、CDC から 2 つのデバイス コンテキストをm_hAttribDC継承しますm_hDC。 デバイス コンテキストはすべての m_hDC CDC GDI 出力呼び出しをm_hAttribDC処理し、デバイス コンテキストはすべての CDC GDI 属性呼び出しを処理します。 通常、これら 2 つのデバイス コンテキストは同じデバイスを参照します。 この場合 CMetaFileDC、属性 DC は既定で NULL に設定されます。

画面、プリンター、またはメタファイル以外のデバイスを指す 2 つ目のデバイス コンテキストを作成し、メンバー関数を SetAttribDC 呼び出して新しいデバイス コンテキスト m_hAttribDCを関連付けます。 GDI の情報の呼び出しは、新しい m_hAttribDC呼び出しに送られるようになりました。 出力 GDI 呼び出しは、メタファイルを表す 、に移動 m_hDCします。

詳細についてはCMetaFileDC、「デバイス コンテキスト」を参照してください

継承階層

CObject

CDC

CMetaFileDC

必要条件

ヘッダー: afxext.h

CMetaFileDC::Close

メタファイル デバイス コンテキストを閉じ、CDC::P layMetaFile メンバー関数を使用 してメタファイルを再生するために使用できる Windows メタファイル ハンドルを作成します。

HMETAFILE Close();

戻り値

関数が成功した場合の有効な HMETAFILE。それ以外の場合は NULL。

解説

Windows メタファイル ハンドルを使用して、CopyMetaFile などの Windows 関数を使用してメタファイルを操作することもできます。

Windows DeleteMetaFile 関数を呼び出して、使用後にメタファイルを 削除します。

CMetaFileDC::CloseEnhanced

拡張メタファイル デバイス コンテキストを閉じ、拡張形式のメタファイルを識別するハンドルを返します。

HENHMETAFILE CloseEnhanced();

戻り値

拡張メタファイルのハンドル (成功した場合)。それ以外の場合は NULL。

解説

アプリケーションは、この関数によって返される拡張メタファイル ハンドルを使用して、次のタスクを実行できます。

  • 拡張メタファイルに保存されている画像を表示する

  • 拡張メタファイルのコピーを作成する

  • 拡張メタファイル内の個々のレコードを列挙、編集、またはコピーする

  • enhanced-metafile ヘッダーからメタファイルの内容の説明 (省略可能) を取得する

  • 拡張メタファイル ヘッダーのコピーを取得する

  • 拡張メタファイルのバイナリ コピーを取得する

  • オプションのパレットで色を列挙する

  • 拡張形式のメタファイルを Windows 形式のメタファイルに変換する

アプリケーションで拡張メタファイル ハンドルが不要になったら、Win32 DeleteEnhMetaFile 関数を呼び出してハンドルを解放する必要があります。

CMetaFileDC::CMetaFileDC

2 つの手順でオブジェクトを CMetaFileDC 構築します。

CMetaFileDC();

解説

まず、Windows メタファイル デバイス コンテキストを作成し、オブジェクトにアタッチCMetaFileDCする呼び出しを呼び出CMetaFileDCCreateします。

CMetaFileDC::Create

2 つの手順でオブジェクトを CMetaFileDC 構築します。

BOOL Create(LPCTSTR lpszFilename = NULL);

パラメーター

lpszFilename
null で終わる文字列を指します。 作成するメタファイルのファイル名を指定します。 lpszFilename が NULL の場合は、新しいメモリ内メタファイルが作成されます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

まず、コンストラクター CMetaFileDCを呼び出し、次に呼び出 Createします。これにより、Windows メタファイル デバイス コンテキストが作成され、オブジェクトに CMetaFileDC アタッチされます。

CMetaFileDC::CreateEnhanced

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

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

パラメーター

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

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

lpBounds
拡張メタファイルに 格納する図の HIMETRIC 単位 (0.01 ミリメートル単位) 単位の寸法を指定する RECT データ構造または CRect オブジェクトを指します。

lpszDescription
図を作成したアプリケーションの名前と図のタイトルを指定する、0 で終わる文字列を指します。

戻り値

拡張メタファイルのデバイス コンテキストのハンドル (成功した場合)。それ以外の場合は NULL。

解説

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

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

lpBounds パラメーターが指すデータ構造のRECT左と上のメンバーは、それぞれ右と下のメンバーより小さくする必要があります。 四角形の端に沿ったポイントが図に含まれます。 lpBounds が NULL の場合、グラフィックス デバイス インターフェイス (GDI) は、アプリケーションによって描画された図を囲むことができる最小の四角形の寸法を計算します。 lpBounds パラメーターは、可能な限り指定する必要があります。

lpszDescription パラメーターが指す文字列には、アプリケーション名と図名の間に null 文字を含める必要があり、2 つの null 文字 ("XYZ グラフィックス エディター\0Bald Eagle\0\0" など) で終了する必要があります。ここで、\0 は null 文字を表します。 lpszDescription が NULL の場合、enhanced-metafile ヘッダーに対応するエントリはありません。

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

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

アプリケーションでは、Win32 GetWinMetaFileBits 関数を使用して拡張メタファイルを古い Windows メタファイル形式に変換する必要があります。

拡張メタファイルのファイル名には、EMF 拡張機能。

関連項目

CDC クラス
階層図