拡張メタファイルの作成
CreateEnhMetaFile 関数を使用して、適切な引数を指定して、拡張メタファイルを作成します。 システムでは、これらの引数を使用して画像の寸法を維持し、メタファイルをディスクに格納するかメモリに格納するかを決定します。
出力デバイス間で画像の寸法を維持するために、 CreateEnhMetaFile には 参照デバイスの解像度が必要です。 この 参照デバイス は、画像が最初に表示されたデバイスであり、 参照 DC は参照デバイスに関連付けられている デバイス コンテキスト です。 CreateEnhMetaFile 関数を呼び出すときは、この DC を識別するハンドルを指定する必要があります。 このハンドルを取得するには、 GetDC 関数または CreateDC 関数を 呼び出します。 参照デバイスに現在の表示デバイスを使用するハンドルとして NULL を 指定することもできます。
ほとんどのアプリケーションでは、画像が永続的に格納されるため、ディスクに格納される拡張メタファイルが作成されます。ただし、これが必要ない場合もあります。 たとえば、グラフ描画機能を提供するワープロ アプリケーションでは、ユーザー定義グラフを拡張メタファイルとしてメモリに格納し、拡張メタファイル ビットをメモリからユーザーのドキュメント ファイルにコピーできます。 ディスクに永続的に格納されるメタファイルを必要とするアプリケーションは、 CreateEnhMetaFile を呼び出すときにファイル名を指定する必要があります。 ファイル名を指定しない場合、システムはメタファイルを一時ファイルとして自動的に処理し、メモリに格納します。
画像と作成者に関する情報を含むメタファイルに、省略可能なテキストの説明を追加できます。 アプリケーションは、[ファイルを開く] ダイアログ ボックスにこれらの文字列を表示して、適切なファイルの選択に役立つメタファイル コンテンツに関する情報をユーザーに提供できます。 アプリケーションにテキストの説明が含まれている場合は、 CreateEnhMetaFile を呼び出すときに文字列へのポインターを指定する必要があります。
CreateEnhMetaFile が成功すると、特殊なメタファイル デバイス コンテキストを識別するハンドルが返されます。 メタファイル デバイス コンテキストは、出力デバイスではなくファイルに関連付けられているという点で一意です。 システムは、メタファイル デバイス コンテキストへのハンドルを受け取った GDI 関数を処理すると、GDI 関数を拡張メタファイル レコードに変換し、拡張メタファイルの末尾にレコードを追加します。
図が完成し、最後のレコードが拡張メタファイルに追加されると、アプリケーションは CloseEnhMetaFile 関数を呼び出してファイルを閉じることができます。 この関数は、特殊なメタファイル デバイス コンテキストを閉じて削除し、拡張メタファイルを識別するハンドルを返します。
拡張形式のメタファイルまたは拡張形式のメタファイル ハンドルを削除するには、 DeleteEnhMetaFile 関数を呼び出します。