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 コマンドのシーケンスを送信します。 MoveToLineToなど、出力を作成する GDI コマンドのみを使用できます。

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

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

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

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

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

CMetaFileDCの詳細については、「Device Contexts」を参照してください。

継承階層

CObject

CDC

CMetaFileDC

要件

Header: 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();

解説

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

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 mm 単位) で寸法を指定する 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 の場合、拡張メタファイル ヘッダーに対応するエントリはありません。

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

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

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

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

関連項目

CDC クラス
階層図