CGdiObject
CGdiObject類為各種Windows圖形設(shè)備接口(GDI)對(duì)象,如位圖、區(qū)域、畫刷、畫筆、調(diào)色板、字體等提供了一些基本類。我們不會(huì)直接構(gòu)造一個(gè)CGdiObject對(duì)象,而是使用某一個(gè)派生類如CPen或CBrush創(chuàng)建。
#include <afxwin.h>
CGdiObject類的成員
數(shù)據(jù)成員
構(gòu)造函數(shù)
操作
CGdiObject::Attach
BOOL Attach(HGDIOBI hobject);
返回值:如果附加成功,則返回非零值,否則為0。
參數(shù):
說明:將一個(gè)Windows GDI對(duì)象附加給CGdiObject對(duì)象。
CGdiObject::CGdiObject
CGdiObject( );
說明:
構(gòu)造一個(gè)CGdiObject對(duì)象。我們從不直接構(gòu)造一個(gè)CGdiObject,而是由派生類構(gòu)造一個(gè)對(duì)象,例如CPen或CBrush。
CGdiObject::CreateStockObject
BOOL CreateStockObject(int nIndex);
返回值:如果成功,則返回非零值,否則為0。
參數(shù):
說明:
獲取一個(gè)Windows標(biāo)準(zhǔn)的預(yù)定義畫筆、畫刷或字體的句柄,以將一個(gè)GDI對(duì)象附加給一個(gè)CGdiObject對(duì)象??膳c某個(gè)派生類同時(shí)調(diào)用此成員函數(shù),應(yīng)使派生類與Windows GDI對(duì)象的類型相對(duì)應(yīng),例如,CPen是標(biāo)準(zhǔn)畫筆。
CGdiObject::DeleteObject
BOOL DeleteObject( );
返回值:如果GDI對(duì)象被成功刪除,則返回非零值,否則為0。
說明:
通過釋放附加的GDI對(duì)象占有的系統(tǒng)存儲(chǔ)來刪除它們。與CGdiObject對(duì)象有關(guān)的存儲(chǔ)不受此調(diào)用的影響。如果CGdiObject對(duì)象正被選入設(shè)備上下文中,則應(yīng)用不可對(duì)此對(duì)象調(diào)用DeleteObject。
當(dāng)一個(gè)模式畫刷被刪除時(shí),與之相關(guān)聯(lián)的位圖不被刪除。位圖必須被獨(dú)立刪除。
CGdiObject::DeleteTempMap
static void PASCAL DeleteTempMap( );
說明:
由CwinApp空閑時(shí)間句柄自動(dòng)調(diào)用。DeleteTempMap刪除任意由FromHandle創(chuàng)建的臨時(shí)CGdiObject對(duì)象。在刪除CGdiObject對(duì)象之前,同時(shí)解除附加給此CGdiObject對(duì)象的所有Windows GDI對(duì)象。
CGdiObject::Detach
HGDIOBJ Detach ( );
返回值:
一個(gè)被解除的Windows GDI對(duì)象的句柄。如果沒有附加GDI對(duì)象,則返回NULL。
說明:
解除一個(gè)CGdiObject對(duì)象的Windows GDI對(duì)象并返回其句柄。
CGdiObject::FromHandle
static CGdiobject* PASCAL FromHandle(HGDIOBJ hObject);
返回值:一個(gè)指向CGdiObject對(duì)象的臨時(shí)或永久性指針。
參數(shù):
說明:
返回一個(gè)給出了句柄的CGdiObject對(duì)象指針給Windows GDI對(duì)象。如果一個(gè)CGdiObject對(duì)象還未附加給Windows GDI對(duì)象,則一個(gè)臨時(shí)CGdiObject對(duì)象被創(chuàng)建并被附加。
直到下次應(yīng)用在其事件循環(huán)中有空閑時(shí)間時(shí),臨時(shí)CGdiObject對(duì)象才是可用的。此時(shí)所有臨時(shí)圖形對(duì)象均被刪除?;蛘哒f僅在處理一個(gè)Windows消息時(shí),臨時(shí)對(duì)象才是可用的。
CGdiObject::GetObject
int GetObject(int nCount,LPVOID lpObject)const;
返回值:獲取的字節(jié)數(shù)。如果發(fā)生錯(cuò)誤,則返回0。
參數(shù):
說明:
用定義指定對(duì)象的數(shù)據(jù)填充緩沖區(qū)。函數(shù)獲得一個(gè)類型由圖象對(duì)象決定的數(shù)據(jù)結(jié)構(gòu),列表如下所示:
如果對(duì)象是一個(gè)CBitmap對(duì)象,則函數(shù)僅返回寬度、高度和顏色格式,實(shí)際位值可由CBitmap::GetBitmapBits獲得。
如果對(duì)象是一個(gè)CPalette對(duì)象,函數(shù)會(huì)返回一個(gè)字,此字指定了調(diào)色板中入口的個(gè)數(shù)而不是定義調(diào)色板的LOGPALETTEJIE結(jié)構(gòu)。一個(gè)應(yīng)用可以通過調(diào)用CPalette::GetPaletteEntries來獲得調(diào)色板入口的更多信息。
CGdiObject::GetObjectType
UINT GetObjectType( )const;
返回值:如果成功,則返回對(duì)象類型,否則為0,可能的值如下:
說明:獲取GDI對(duì)象的類型。
CGdiObject::GetSafeHandle
HGDIOBJ GetSafeHandle( )const;
返回值:一個(gè)附加的Windows GDI對(duì)象句柄。如果無附加對(duì)象,則返回0。
說明:
如果m_hObject不是NULL,則返回m_hObject,否則返回NULL。這是一般句柄接口的一部分,當(dāng)NULL是合法的或句柄的可用特殊值時(shí)十分有用。
CGdiObject::UnrealizeObject
BOOL UnrealizeObject( );
返回值:如果成功,則返回非零值,否則返回零。
說明:
重新設(shè)置畫刷資源或重新設(shè)置邏輯調(diào)色板。因?yàn)樗荂GdiObject類的一個(gè)成員函數(shù),所以它僅能為CBrush或CPalette對(duì)象所使用。
對(duì)于CBrush對(duì)象來說,UnrealizeObject指定系統(tǒng)在下一次選擇設(shè)備上下文時(shí)重新設(shè)置給定的畫刷;如果對(duì)象是CPalette對(duì)象,它指定系統(tǒng)識(shí)別該調(diào)色板,即使以前調(diào)色板未被識(shí)別。當(dāng)下一次應(yīng)用調(diào)用CDC::RealizePalette函數(shù)時(shí),系統(tǒng)完全重新映射邏輯調(diào)色板為系統(tǒng)調(diào)色板。
此函數(shù)不可與存儲(chǔ)對(duì)象一起使用。當(dāng)一個(gè)新的畫刷資源被設(shè)置(用CDC:: SetBrushOrg函數(shù))時(shí),必須調(diào)用此成員函數(shù)。UnrealizeObject函數(shù)不可被當(dāng)前選用的畫刷或調(diào)色板的任何顯示上下文調(diào)用。
CGdiObject::m_hObject
CObject |
└CGdiObject |
CGdiObject類為各種Windows圖形設(shè)備接口(GDI)對(duì)象,如位圖、區(qū)域、畫刷、畫筆、調(diào)色板、字體等提供了一些基本類。我們不會(huì)直接構(gòu)造一個(gè)CGdiObject對(duì)象,而是使用某一個(gè)派生類如CPen或CBrush創(chuàng)建。
#include <afxwin.h>
CGdiObject類的成員
數(shù)據(jù)成員
m_hObject | 包含附加給對(duì)象的HBITMAP,HPALETTE,HRGN,HBRUSH,HPEN或HFONT的句柄 |
構(gòu)造函數(shù)
CGdiObject | 構(gòu)造一個(gè)CGdiObject對(duì)象 |
操作
GetSafeHandle | 如果this不是NULL,則返回m_hObject,否則返回NULL |
FromHandle | 返回指向給定了Windows GDI對(duì)象句柄的CGdiObject對(duì)象指針 |
Attach | 將一個(gè)Windows GDI對(duì)象附加給一個(gè)CGdiObject對(duì)象 |
Detach | 將一個(gè)Windows GDI對(duì)象從CGdiObject對(duì)象上拆下,并返回Windows GDI對(duì)象的句柄 |
DeleteObject | 從內(nèi)存中刪除附加給CGdiObject的Windows GDI對(duì)象,釋放與此對(duì)象相關(guān)的系統(tǒng)存儲(chǔ)空間 |
DeleteTempMap | 刪去所有FromHandle建立的臨時(shí)CGdiObject對(duì)象 |
GetObject | 把描述了將Windows GDI對(duì)象附加給CGdiObject對(duì)象的數(shù)據(jù)填充到緩沖區(qū) |
CreateStockObject | 獲取一個(gè)Windows標(biāo)準(zhǔn)的預(yù)定義畫筆、畫刷或字體的句柄 |
UnrealizeObject | 重新設(shè)置一個(gè)畫刷或重新設(shè)置一個(gè)邏輯調(diào)色板 |
GetObjectType | 獲取GDI對(duì)象的類型 |
CGdiObject::Attach
BOOL Attach(HGDIOBI hobject);
返回值:如果附加成功,則返回非零值,否則為0。
參數(shù):
hObject | 一個(gè)Windows GDI對(duì)象(如HPEN,HBRUSH)的句柄。 |
說明:將一個(gè)Windows GDI對(duì)象附加給CGdiObject對(duì)象。
CGdiObject::CGdiObject
CGdiObject( );
說明:
構(gòu)造一個(gè)CGdiObject對(duì)象。我們從不直接構(gòu)造一個(gè)CGdiObject,而是由派生類構(gòu)造一個(gè)對(duì)象,例如CPen或CBrush。
CGdiObject::CreateStockObject
BOOL CreateStockObject(int nIndex);
返回值:如果成功,則返回非零值,否則為0。
參數(shù):
nIndex | 一個(gè)定義了標(biāo)準(zhǔn)對(duì)象類的常量,請(qǐng)參閱聯(lián)機(jī)文檔“Win32 SDK”中GetStockObject的參數(shù)fnObject的描述。 |
說明:
獲取一個(gè)Windows標(biāo)準(zhǔn)的預(yù)定義畫筆、畫刷或字體的句柄,以將一個(gè)GDI對(duì)象附加給一個(gè)CGdiObject對(duì)象??膳c某個(gè)派生類同時(shí)調(diào)用此成員函數(shù),應(yīng)使派生類與Windows GDI對(duì)象的類型相對(duì)應(yīng),例如,CPen是標(biāo)準(zhǔn)畫筆。
CGdiObject::DeleteObject
BOOL DeleteObject( );
返回值:如果GDI對(duì)象被成功刪除,則返回非零值,否則為0。
說明:
通過釋放附加的GDI對(duì)象占有的系統(tǒng)存儲(chǔ)來刪除它們。與CGdiObject對(duì)象有關(guān)的存儲(chǔ)不受此調(diào)用的影響。如果CGdiObject對(duì)象正被選入設(shè)備上下文中,則應(yīng)用不可對(duì)此對(duì)象調(diào)用DeleteObject。
當(dāng)一個(gè)模式畫刷被刪除時(shí),與之相關(guān)聯(lián)的位圖不被刪除。位圖必須被獨(dú)立刪除。
CGdiObject::DeleteTempMap
static void PASCAL DeleteTempMap( );
說明:
由CwinApp空閑時(shí)間句柄自動(dòng)調(diào)用。DeleteTempMap刪除任意由FromHandle創(chuàng)建的臨時(shí)CGdiObject對(duì)象。在刪除CGdiObject對(duì)象之前,同時(shí)解除附加給此CGdiObject對(duì)象的所有Windows GDI對(duì)象。
CGdiObject::Detach
HGDIOBJ Detach ( );
返回值:
一個(gè)被解除的Windows GDI對(duì)象的句柄。如果沒有附加GDI對(duì)象,則返回NULL。
說明:
解除一個(gè)CGdiObject對(duì)象的Windows GDI對(duì)象并返回其句柄。
CGdiObject::FromHandle
static CGdiobject* PASCAL FromHandle(HGDIOBJ hObject);
返回值:一個(gè)指向CGdiObject對(duì)象的臨時(shí)或永久性指針。
參數(shù):
hObject | 一個(gè)Windows GDI對(duì)象的句柄。 |
說明:
返回一個(gè)給出了句柄的CGdiObject對(duì)象指針給Windows GDI對(duì)象。如果一個(gè)CGdiObject對(duì)象還未附加給Windows GDI對(duì)象,則一個(gè)臨時(shí)CGdiObject對(duì)象被創(chuàng)建并被附加。
直到下次應(yīng)用在其事件循環(huán)中有空閑時(shí)間時(shí),臨時(shí)CGdiObject對(duì)象才是可用的。此時(shí)所有臨時(shí)圖形對(duì)象均被刪除?;蛘哒f僅在處理一個(gè)Windows消息時(shí),臨時(shí)對(duì)象才是可用的。
CGdiObject::GetObject
int GetObject(int nCount,LPVOID lpObject)const;
返回值:獲取的字節(jié)數(shù)。如果發(fā)生錯(cuò)誤,則返回0。
參數(shù):
nCount | 指定要拷貝到lpObject緩沖區(qū)的字節(jié)數(shù)。 |
lpObject | 指向用戶應(yīng)用緩沖區(qū)的指針以接收信息。 |
說明:
用定義指定對(duì)象的數(shù)據(jù)填充緩沖區(qū)。函數(shù)獲得一個(gè)類型由圖象對(duì)象決定的數(shù)據(jù)結(jié)構(gòu),列表如下所示:
對(duì)象 | 緩沖區(qū)類型 |
CPen | LOGPENC |
Brush | LOGBRUSH |
CFont | LOGFONT |
CBitmap | BITMAP |
CPalette | WORD |
CRgn | Not supported(不支持) |
如果對(duì)象是一個(gè)CPalette對(duì)象,函數(shù)會(huì)返回一個(gè)字,此字指定了調(diào)色板中入口的個(gè)數(shù)而不是定義調(diào)色板的LOGPALETTEJIE結(jié)構(gòu)。一個(gè)應(yīng)用可以通過調(diào)用CPalette::GetPaletteEntries來獲得調(diào)色板入口的更多信息。
CGdiObject::GetObjectType
UINT GetObjectType( )const;
返回值:如果成功,則返回對(duì)象類型,否則為0,可能的值如下:
OBJ_BITMAP | 位圖 |
OBJ_BRUSH | 畫刷 |
OBJ_FONT | 字體 |
OBJ_PAL | 調(diào)色板 |
OBJ_PEN | 畫筆 |
OBJ_EXTPEN | 擴(kuò)展畫筆 |
OBJ_REGION | 區(qū)域 |
OBJ_DC | 設(shè)備上下文 |
OBJ_MEMDC | 存儲(chǔ)設(shè)備上下文 |
OBJ_METAFILE | 元文件 |
OBJ_METADC | 元文件設(shè)備上下文 |
OBJ_ENHMETAFILE | 擴(kuò)展元文件 |
OBJ_ENHMATADC | 擴(kuò)展元文件設(shè)備上下文 |
說明:獲取GDI對(duì)象的類型。
CGdiObject::GetSafeHandle
HGDIOBJ GetSafeHandle( )const;
返回值:一個(gè)附加的Windows GDI對(duì)象句柄。如果無附加對(duì)象,則返回0。
說明:
如果m_hObject不是NULL,則返回m_hObject,否則返回NULL。這是一般句柄接口的一部分,當(dāng)NULL是合法的或句柄的可用特殊值時(shí)十分有用。
CGdiObject::UnrealizeObject
BOOL UnrealizeObject( );
返回值:如果成功,則返回非零值,否則返回零。
說明:
重新設(shè)置畫刷資源或重新設(shè)置邏輯調(diào)色板。因?yàn)樗荂GdiObject類的一個(gè)成員函數(shù),所以它僅能為CBrush或CPalette對(duì)象所使用。
對(duì)于CBrush對(duì)象來說,UnrealizeObject指定系統(tǒng)在下一次選擇設(shè)備上下文時(shí)重新設(shè)置給定的畫刷;如果對(duì)象是CPalette對(duì)象,它指定系統(tǒng)識(shí)別該調(diào)色板,即使以前調(diào)色板未被識(shí)別。當(dāng)下一次應(yīng)用調(diào)用CDC::RealizePalette函數(shù)時(shí),系統(tǒng)完全重新映射邏輯調(diào)色板為系統(tǒng)調(diào)色板。
此函數(shù)不可與存儲(chǔ)對(duì)象一起使用。當(dāng)一個(gè)新的畫刷資源被設(shè)置(用CDC:: SetBrushOrg函數(shù))時(shí),必須調(diào)用此成員函數(shù)。UnrealizeObject函數(shù)不可被當(dāng)前選用的畫刷或調(diào)色板的任何顯示上下文調(diào)用。
CGdiObject::m_hObject