CMetaFileDC 類別

實作 Windows 中繼檔,這個檔案包含一連串可重新執行來建立所需影像或文字的繪圖裝置介面 (GDI) 命令。

語法

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 指令,例如 MoveToLineTo

將所需的命令傳送至元文件之後,請呼叫 Close 成員函式,以關閉元檔案裝置內容並傳回元檔句柄。 然後處置 CMetaFileDC 物件。

CDC::P layMetaFile 接著可以使用元檔句柄重複播放元檔。 元檔也可以由 Windows 函式操作,例如 CopyMetaFile,其會將元檔複製到磁碟。

不再需要元檔時,請使用 DeleteMetaFile Windows函式從記憶體中刪除它。

您也可以實作 CMetaFileDC 物件,以便處理輸出呼叫和屬性 GDI 呼叫,例如 GetTextExtent。 這類元檔更有彈性,而且更容易重複使用一般 GDI 程式代碼,通常由輸出和屬性呼叫混合組成。 類別CMetaFileDC會從 CDC 繼承兩個裝置內容和 m_hAttribDCm_hDCm_hDC裝置內容會處理所有 CDC GDI 輸出呼叫,而裝置內容會m_hAttribDC處理所有 CDC GDI 屬性呼叫。 一般而言,這兩個裝置內容會參考相同的裝置。 在的案例中 CMetaFileDC,DC 屬性預設會設定為 NULL。

建立指向螢幕、印表機或元檔以外的裝置的第二個裝置內容,然後呼叫 SetAttribDC 成員函式,將新的裝置內容與 m_hAttribDC產生關聯。 GDI 要求資訊現在會導向至新的 m_hAttribDC。 輸出 GDI 呼叫會移至 m_hDC,代表元檔。

如需 的詳細資訊 CMetaFileDC,請參閱 裝置內容

繼承階層架構

CObject

CDC

CMetaFileDC

需求

標頭: afxext.h

CMetaFileDC::Close

關閉元文件裝置內容,並建立 Windows 元檔句柄,以使用 CDC::P layMetaFile 成員函式來播放元檔。

HMETAFILE Close();

傳回值

如果函式成功,則為有效的 HMETAFILE;否則為 NULL。

備註

Windows 元檔句柄也可以用來使用 CopyMetaFileWindows 函式來操作元檔。

藉由呼叫 Windows DeleteMetaFile 函式,刪除使用後的元檔。

CMetaFileDC::CloseEnhanced

關閉增強型元檔裝置內容,並傳回識別增強格式元檔句柄。

HENHMETAFILE CloseEnhanced();

傳回值

如果成功,則為增強型元檔句柄;否則為 NULL。

備註

應用程式可以使用此函式傳回的增強型元檔句柄來執行下列工作:

  • 顯示儲存在增強元檔中的圖片

  • 建立增強型元檔的副本

  • 列舉、編輯或複製增強型元檔中的個別記錄

  • 從增強型元文件標頭擷取元文件內容的選擇性描述

  • 擷取增強型元文件標頭的複本

  • 擷取增強型元檔的二進位複本

  • 列舉選擇性調色盤中的色彩

  • 將增強格式元檔轉換成 Windows 格式元檔

當應用程式不再需要增強型元檔句柄時,應該呼叫 Win32 DeleteEnhMetaFile 函式來釋放句柄。

CMetaFileDC::CMetaFileDC

CMetaFileDC在兩個步驟中建構物件。

CMetaFileDC();

備註

首先,呼叫 CMetaFileDC,然後呼叫 Create,這會建立 Windows 元檔裝置內容,並將它附加至 CMetaFileDC 物件。

CMetaFileDC::Create

CMetaFileDC在兩個步驟中建構物件。

BOOL Create(LPCTSTR lpszFilename = NULL);

參數

lpszFilename
指向以 Null 結尾的字元字串。 指定要建立之元文件的檔名。 如果 lpszFilename 為 NULL,則會建立新的記憶體內部元檔。

傳回值

如果函式成功則為非零,否則為 0。

備註

首先,呼叫 建構函式 CMetaFileDC,然後呼叫 Create,這會建立 Windows 元檔裝置內容,並將它附加至 CMetaFileDC 物件。

CMetaFileDC::CreateEnhanced

建立增強格式元檔裝置內容。

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

參數

pDCRef
識別增強型元文件參考裝置。

lpszFileName
指向以 Null 結尾的字元字串。 指定要建立的增強元文件檔名。 如果此參數為 NULL,則增強型元檔是以記憶體為基礎,而且當對象終結或呼叫 Win32 DeleteEnhMetaFile 函式時遺失其內容。

lpBounds
指向 RECT 數據結構或 CRect 物件,指定要儲存在增強元檔之圖片的 HIMETRIC 單位(以 .01 公厘增量為單位)的維度。

lpszDescription
指向以零結尾的字串,指定建立圖片的應用程式名稱,以及圖片的標題。

傳回值

如果成功,則為增強型元檔之裝置內容的句柄;否則為 NULL。

備註

此 DC 可用來儲存與裝置無關的圖片。

Windows 會使用 pDCRef 參數所識別的參考裝置來記錄最初出現圖片之裝置的解析度和單位。 如果 pDCRef 參數為 NULL,它會使用目前的顯示裝置進行參考。

lpBounds 參數所指向之數據結構的左和上層成員RECT必須分別小於右邊和底部成員。 矩形邊緣的點會包含在圖片中。 如果 lpBounds 為 NULL,圖形裝置介面 (GDI) 會計算可封入應用程式繪製圖片之最小矩形的維度。 應該盡可能提供 lpBounds 參數。

lpszDescription 參數所指向的字串必須包含應用程式名稱和圖片名稱之間的 Null 字元,而且必須以兩個 Null 字元結尾,例如“XYZ 圖形編輯器\0Bald Eagle\0\0”,其中 \0 代表 Null 字元。 如果 lpszDescription 為 NULL,則增強元文件標頭中沒有對應的專案。

應用程式會使用此函式所建立的DC,將圖形圖片儲存在增強型元檔中。 識別此 DC 的句柄可以傳遞至任何 GDI 函式。

應用程式將圖片儲存在增強型元文件之後,即可藉由呼叫 CDC::PlayMetaFile 函式,在任何輸出裝置上顯示圖片。 顯示圖片時,Windows 會使用 lpBounds 參數所指向的矩形,以及參照裝置的解析度數據來定位和縮放圖片。 此函式傳回的裝置內容包含與任何新 DC 相關聯的相同預設屬性。

應用程式必須使用 Win32 GetWinMetaFileBits 函式,將增強型元檔轉換為較舊的 Windows 元檔格式。

增強型元檔案的檔案名稱應該使用 。EMF 擴充功能。

另請參閱

CDC 類別
階層架構圖表