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 命令,例如 MoveTo
和 LineTo
。
將所需的命令傳送至中繼檔之後,請呼叫 Close
成員函式,以關閉中繼檔裝置內容並傳回中繼檔控制碼。 然後處置 CMetaFileDC
物件。
CDC::P layMetaFile 接著可以使用中繼檔控制碼重複播放中繼檔。 中繼檔也可以由 Windows 函式操作,例如 CopyMetaFile ,其會將元檔案複製到磁片。
不再需要中繼檔時,請使用 DeleteMetaFile Windows 函式從記憶體中刪除它。
您也可以實作 CMetaFileDC
物件,以便處理輸出呼叫和屬性 GDI 呼叫,例如 GetTextExtent
。 這類中繼檔更有彈性,而且更容易重複使用一般 GDI 程式碼,通常由輸出和屬性呼叫混合組成。 類別 CMetaFileDC
會從 CDC 繼承兩個裝置內容和 m_hAttribDC
m_hDC
。 m_hDC
裝置內容會處理所有 CDC GDI 輸出呼叫,而裝置內容會 m_hAttribDC
處理所有 CDC GDI 屬性呼叫。 一般而言,這兩個裝置內容會參考相同的裝置。 在 的案例中 CMetaFileDC
,DC 屬性預設會設定為 Null。
建立指向螢幕、印表機或中繼檔以外的裝置的第二個裝置內容,然後呼叫 SetAttribDC
成員函式,將新的裝置內容與 m_hAttribDC
產生關聯。 GDI 要求資訊現在會導向至新的 m_hAttribDC
。 輸出 GDI 呼叫會移至 m_hDC
,代表中繼檔。
如需 的詳細資訊 CMetaFileDC
,請參閱 裝置內容 。
繼承階層架構
CMetaFileDC
需求
標頭: afxext.h
CMetaFileDC::Close
關閉中繼檔裝置內容,並建立 Windows 中繼檔控制碼,以使用 CDC::P layMetaFile 成員函式來播放中繼檔。
HMETAFILE Close();
傳回值
如果函式成功,則為有效的 HMETAFILE;否則為 Null。
備註
Windows 中繼檔控制碼也可以用來使用 CopyMetaFile 等 Windows 函式來操作中繼檔。
藉由呼叫 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 擴充功能。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應