共用方式為


CGdiObject 類別

為各種 Windows 繪圖裝置介面 (GDI) 物件 (例如點陣圖、區域、筆刷、畫筆、調色盤和字型) 提供基底類別。

語法

class CGdiObject : public CObject

成員

公用建構函式

名稱 描述
CGdiObject::CGdiObject 建構 CGdiObject 物件。

公用方法

名稱 描述
CGdiObject::Attach 將 Windows GDI 物件附加至 CGdiObject 物件。
CGdiObject::CreateStockObject 擷取其中一個 Windows 預先定義的手寫筆、筆刷或字型的控制碼。
CGdiObject::D eleteObject 藉由釋放與物件相關聯的所有系統儲存體,從記憶體中刪除附加至 CGdiObject 物件的 Windows GDI 物件。
CGdiObject::D eleteTempMap 刪除 所 FromHandle 建立的任何暫存 CGdiObject 物件。
CGdiObject::D etach 將 Windows GDI 物件與 物件中斷 CGdiObject 連結,並將控制碼傳回給 Windows GDI 物件。
CGdiObject::FromHandle 傳回物件指標 CGdiObject ,指定 Windows GDI 物件的控制碼。
CGdiObject::GetObject 以描述附加至 CGdiObject 物件的 Windows GDI 物件的資料填入緩衝區。
CGdiObject::GetObjectType 擷取 GDI 物件的型別。
CGdiObject::Get保管庫Handle m_hObject除非 this 是 Null,否則會傳回 Null,在此情況下會傳回 Null。
CGdiObject::UnrealizeObject 重設筆刷的來源或重設邏輯調色盤。

公用運算子

名稱 描述
CGdiObject::operator != 判斷兩個 GDI 物件在邏輯上是否不相等。
CGdiObject::operator == 判斷兩個 GDI 物件在邏輯上是否相等。
CGdiObject::operator HGDIOBJ 擷取附加 Windows GDI 物件的 HANDLE。

公用資料成員

名稱 描述
CGdiObject::m_hObject 包含附加至此物件的 HBITMAP、HPALETTE、HRGN、HBRUSH、HPEN 或 HFONT 的 HANDLE。

備註

您永遠不會直接建立 CGdiObject 。 相反地,您會從其中一個衍生類別建立 物件,例如 CPenCBrush

如需 的詳細資訊 CGdiObject ,請參閱 繪圖物件

繼承階層架構

CObject

CGdiObject

需求

標題: afxwin.h

CGdiObject::Attach

將 Windows GDI 物件附加至 CGdiObject 物件。

BOOL Attach(HGDIOBJ hObject);

參數

hObject
Windows GDI 物件的 HANDLE(例如 HPEN 或 HBRUSH)。

傳回值

如果附件成功,則為非零;否則為 0。

CGdiObject::CGdiObject

建構 CGdiObject 物件。

CGdiObject();

備註

您永遠不會直接建立 CGdiObject 。 相反地,您會從其中一個衍生類別建立 物件,例如 CPenCbrush

CGdiObject::CreateStockObject

擷取其中一個預先定義的庫存 Windows GDI 畫筆、筆刷或字型的控制碼,並將 GDI 物件附加至 CGdiObject 物件。

BOOL CreateStockObject(int nIndex);

參數

nIndex
常數,指定所需的股票物件類型。 如需適當值的描述,請參閱 Windows SDK 中 GetStockObject 的參數 fnObject

傳回值

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

備註

使用其中一個對應至 Windows GDI 物件類型的衍生類別呼叫此函式,例如 CPen 股票畫筆。

CGdiObject::D eleteObject

釋放與 Windows GDI 物件相關聯的所有系統儲存體,以從記憶體中刪除附加的 Windows GDI 物件。

BOOL DeleteObject();

傳回值

如果已成功刪除 GDI 物件,則為非零;否則為 0。

備註

CGdiObject 物件相關聯的儲存體不會受到這個呼叫的影響。 應用程式不應該在目前選取到裝置內容的物件上 CGdiObject 呼叫 DeleteObject

刪除圖樣筆刷時,不會刪除與筆刷相關聯的點陣圖。 點陣圖必須獨立刪除。

CGdiObject::D eleteTempMap

CWinApp 閒置時間處理常式自動呼叫, DeleteTempMap 刪除 所 FromHandle 建立的任何暫存 CGdiObject 物件。

static void PASCAL DeleteTempMap();

備註

DeleteTempMap 先中斷連結附加至暫存 CGdiObject 物件的 Windows GDI 物件,再刪除 CGdiObject 物件。

範例

// DeleteTempMap() is a static member and so does not need to
// be called within the scope of an instantiated CGdiObject object.
CGdiObject::DeleteTempMap();

CGdiObject::D etach

將 Windows GDI 物件與 物件中斷 CGdiObject 連結,並將控制碼傳回給 Windows GDI 物件。

HGDIOBJ Detach();

傳回值

HANDLE卸離至 Windows GDI 物件的 ,否則如果沒有附加 GDI 物件,則為 Null。

CGdiObject::FromHandle

傳回物件指標 CGdiObject ,指定 Windows GDI 物件的控制碼。

static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);

參數

hObject
Windows GDI 物件的 HANDLE。

傳回值

可能為暫時或永久的 指標 CGdiObject

備註

CGdiObject如果物件尚未附加至 Windows GDI 物件,則會建立並附加暫存 CGdiObject 物件。

此暫存 CGdiObject 物件只有在下次應用程式在其事件迴圈中有閒置時間為止才有效,此時會刪除所有暫存繪圖物件。 另一種方法是,暫存物件只有在處理一個視窗訊息時才有效。

CGdiObject::GetObject

以定義指定物件的資料填入緩衝區。

int GetObject(
    int nCount,
    LPVOID lpObject) const;

參數

nCount
指定要複製到 lpObject 緩衝區的 位元組數目。

lpObject
指向要接收資訊的使用者提供緩衝區。

傳回值

擷取的位元組數目;否則,如果發生錯誤,則為 0。

備註

函式會擷取類型相依于繪圖物件的資料結構,如下列清單所示:

Object 緩衝區類型
CPen LOGPEN
CBrush LOGBRUSH
CFont LOGFONT
CBitmap 點陣圖
CPalette WORD
CRgn 不支援

如果物件是 CBitmap 物件, GetObject 則只會傳回點陣圖的寬度、高度和色彩格式資訊。 您可以使用 CBitmap::GetBitmapBits 來擷取 實際位。

如果物件是 CPalette 物件, GetObject 則擷取指定調色盤中專案數目的 WORD。 函式不會擷取 定義調色盤的 LOGPALETTE 結構。 應用程式可以藉由呼叫 CPalette::GetPaletteEntries 來取得調色盤專案的相關資訊。

CGdiObject::GetObjectType

擷取 GDI 物件的型別。

UINT GetObjectType() const;

傳回值

如果成功,則為 物件的型別;否則為 0。 此值可以是下列其中一項:

  • OBJ_BITMAP點陣圖

  • OBJ_BRUSH筆刷

  • OBJ_FONT字型

  • OBJ_PAL調色盤

  • OBJ_PEN畫筆

  • OBJ_EXTPEN擴充畫筆

  • OBJ_REGION 區域

  • OBJ_DC裝置內容

  • OBJ_MEMDC記憶體裝置內容

  • OBJ_METAFILE中繼檔

  • OBJ_METADC中繼檔裝置內容

  • OBJ_ENHMETAFILE增強型中繼檔

  • OBJ_ENHMETADC增強型中繼檔裝置內容

CGdiObject::Get保管庫Handle

m_hObject除非 this 是 Null,否則會傳回 Null,在此情況下會傳回 Null。

HGDIOBJ GetSafeHandle() const;

傳回值

附加之 Windows GDI 物件的 HANDLE;否則,如果沒有附加任何物件,則為 Null。

備註

這是一般控制碼介面範例的一部分,當 Null 是控制碼的有效或特殊值時,會很有用。

範例

請參閱 CWnd::IsWindowEnabled 的 範例

CGdiObject::m_hObject

控制碼,其中包含附加至此物件的 HBITMAP、HRGN、HBRUSH、HPEN、HPALETTE 或 HFONT。

HGDIOBJ m_hObject;

CGdiObject::operator !=

判斷兩個 GDI 物件在邏輯上是否不相等。

BOOL operator!=(const CGdiObject& obj) const;

參數

obj
現有 CGdiObject 的指標。

備註

判斷左邊的 GDI 物件是否不等於右邊的 GDI 物件。

CGdiObject::operator ==

判斷兩個 GDI 物件在邏輯上是否相等。

BOOL operator==(const CGdiObject& obj) const;

參數

obj
現有 CGdiObject 的參考。

備註

判斷左邊的 GDI 物件是否等於右邊的 GDI 物件。

CGdiObject::operator HGDIOBJ

擷取附加 Windows GDI 物件的 HANDLE;否則,如果沒有附加任何物件,則為 Null。

operator HGDIOBJ() const;

CGdiObject::UnrealizeObject

重設筆刷的來源或重設邏輯調色盤。

BOOL UnrealizeObject();

傳回值

如果成功則為非零;否則為 0。

備註

雖然 UnrealizeObject 是 類別的成員 CGdiObject 函式,但應該只在 或 CPalette 物件上 CBrush 叫用它。

針對 CBrush 物件, UnrealizeObject 會指示系統在下一次選取指定筆刷時重設指定筆刷的來源。 如果物件是 CPalette 物件, UnrealizeObject 則會指示系統實現調色盤,就像先前尚未實現一樣。 下次應用程式呼叫指定調色盤的 CDC::RealizePalette 函式時,系統會將邏輯調色盤完全重新對應至系統調色盤。

UnrealizeObject 式不應與庫存物件搭配使用。 每當設定新的筆刷原點時,都必須呼叫函 UnrealizeObject 式(透過 CDC::SetBrushOrg 函式)。 針對目前選取的筆刷或目前選取的任何顯示內容選擇區,不得呼叫 函 UnrealizeObject 式。

另請參閱

階層架構圖表
CBitmap 類別
CBrush 類別
CFont 類別
CPalette 類別
CPen 類別
CRgn 類別