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::GetSafeHandle | 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
。 相反地,您會從其中一個衍生類別建立 物件,例如 CPen
或 CBrush
。
如需 的詳細資訊 CGdiObject
,請參閱 圖形物件。
繼承階層架構
CGdiObject
需求
標題: afxwin.h
CGdiObject::Attach
將 Windows GDI 物件附加至 CGdiObject
物件。
BOOL Attach(HGDIOBJ hObject);
參數
物件
Windows GDI 物件的 HANDLE(例如 HPEN 或 HBRUSH)。
傳回值
如果附件成功,則為非零;否則為 0。
CGdiObject::CGdiObject
建構 CGdiObject
物件。
CGdiObject();
備註
您永遠不會直接建立 CGdiObject
。 相反地,您會從其中一個衍生類別建立 物件,例如 CPen
或 Cbrush
。
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);
參數
物件
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::GetSafeHandle
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 類別