CGdiObject程序员百科
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CGdiObject程序员百科
最新历史版本 :CGdiObject 返回词条
编辑时间:11-13 15:51历史版本编辑者:麦兜历史版本:
内容长度:7792 图⽚数:4⽬录数:0
修改原因:全⽂编辑
CGdiObject
CObject
└CGdiObject
CGdiObject类为各种Windows图形设备接⼝(GDI)对象,如位图、区域、画刷、画笔、调⾊板、字体等提供了⼀些基本类。
我们不会直接构造⼀个CGdiObject对象,⽽是使⽤某⼀个派⽣类如CPen或CBrush创建。
#include <afxwin.h>
CGdiObject类的成员
数据成员
m_hObject包含附加给对象的HBITMAP,HPALETTE,HRGN,HBRUSH,HPEN或HFONT的句柄
构造函数
CGdiObject构造⼀个CGdiObject对象
操作
GetSafeHandle如果this不是NULL,则返回m_hObject,否则返回NULL
FromHandle返回指向给定了Windows GDI对象句柄的CGdiObject对象指针
Attach将⼀个Windows GDI对象附加给⼀个CGdiObject对象
Detach将⼀个Windows GDI对象从CGdiObject对象上拆下,并返回Windows
GDI对象的句柄
DeleteObject从内存中删除附加给CGdiObject的Windows GDI对象,释放与此对象相关的系统存储空间
DeleteTempMap删去所有FromHandle建⽴的临时CGdiObject对象
GetObject把描述了将Windows GDI对象附加给CGdiObject对象的数据填充到缓冲区CreateStockObject获取⼀个Windows标准的预定义画笔、画刷或字体的句柄UnrealizeObject重新设置⼀个画刷或重新设置⼀个逻辑调⾊板
GetObjectType获取GDI对象的类型
CGdiObject::Attach
BOOL Attach(HGDIOBI hobject);
返回值:如果附加成功,则返回⾮零值,否则为0。
参数:
hObject⼀个Windows GDI对象(如HPEN,HBRUSH)的句柄。
说明:将⼀个Windows GDI对象附加给CGdiObject对象。
CGdiObject::CGdiObject
CGdiObject( );
说明:
构造⼀个CGdiObject对象。
我们从不直接构造⼀个CGdiObject,⽽是由派⽣类构造⼀个对象,例如CPen或CBrush。
CGdiObject::CreateStockObject
BOOL CreateStockObject(int nIndex);
返回值:如果成功,则返回⾮零值,否则为0。
参数:
nIndex⼀个定义了标准对象类的常量,请参阅联机⽂档“Win32 SDK”中GetStockObject的参数fnObject的描述。
说明:
获取⼀个Windows标准的预定义画笔、画刷或字体的句柄,以将⼀个GDI对象附加给⼀个CGdiObject对象。
可与某个派⽣类同时调⽤此成员函数,应使派⽣类与Windows GDI对象的类型相对应,例如,CPen是标准画笔。
CGdiObject::DeleteObject
BOOL DeleteObject( );
返回值:如果GDI对象被成功删除,则返回⾮零值,否则为0。
说明:
通过释放附加的GDI对象占有的系统存储来删除它们。
与CGdiObject对象有关的存储不受此调⽤的影响。
如果CGdiObject对象正被选⼊设备上下⽂中,则应⽤不可对此对象调⽤DeleteObject。
当⼀个模式画刷被删除时,与之相关联的位图不被删除。
位图必须被独⽴删除。
CGdiObject::DeleteTempMap
static void PASCAL DeleteTempMap( );
说明:
由CwinApp空闲时间句柄⾃动调⽤。
DeleteTempMap删除任意由FromHandle创建的临时CGdiObject对象。
在删除CGdiObject对象之前,同时解除附加给此CGdiObject对象的所有Windows GDI对象。
CGdiObject::Detach
HGDIOBJ Detach ( );
返回值:
⼀个被解除的Windows GDI对象的句柄。
如果没有附加GDI对象,则返回NULL。
说明:
解除⼀个CGdiObject对象的Windows GDI对象并返回其句柄。
CGdiObject::FromHandle
static CGdiobject* PASCAL FromHandle(HGDIOBJ hObject);
返回值:⼀个指向CGdiObject对象的临时或永久性指针。
参数:
hObject⼀个Windows GDI对象的句柄。
说明:
返回⼀个给出了句柄的CGdiObject对象指针给Windows GDI对象。
如果⼀个CGdiObject对象还
未附加给Windows GDI对象,则⼀个临时CGdiObject对象被创建并被附加。
直到下次应⽤在其事件循环中有空闲时间时,临时CGdiObject对象才是可⽤的。
此时所有临时图形对象均被删除。
或者说仅在处理⼀个Windows消息时,临时对象才是可⽤的。
CGdiObject::GetObject
int GetObject(int nCount,LPVOID lpObject)const;
返回值:获取的字节数。
如果发⽣错误,则返回0。
参数:
nCount指定要拷贝到lpObject缓冲区的字节数。
lpObject指向⽤户应⽤缓冲区的指针以接收信息。
说明:
⽤定义指定对象的数据填充缓冲区。
函数获得⼀个类型由图象对象决定的数据结构,列表如下所⽰:
对象缓冲区类型
CPen LOGPENC
Brush LOGBRUSH
CFont LOGFONT
CBitmap BITMAP
CPalette WORD
CRgn Not supported(不⽀持)
如果对象是⼀个CBitmap对象,则函数仅返回宽度、⾼度和颜⾊格式,实际位值可由CBitmap::GetBitmapBits获得。
如果对象是⼀个CPalette对象,函数会返回⼀个字,此字指定了调⾊板中⼊⼝的个数⽽不是定义调⾊板的LOGPALETTEJIE结构。
⼀个应⽤可以通过调⽤CPalette::GetPaletteEntries来获得调⾊板⼊⼝的更多信息。
CGdiObject::GetObjectType
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_ENHMATADC扩展元⽂件设备上下⽂
说明:获取GDI对象的类型。
CGdiObject::GetSafeHandle
HGDIOBJ GetSafeHandle( )const;
返回值:⼀个附加的Windows GDI对象句柄。
如果⽆附加对象,则返回0。
说明:
站长统计
如果m_hObject不是NULL,则返回m_hObject,否则返回NULL。
这是⼀般句柄接⼝的⼀部分,当NULL是合法的或句柄的可⽤特殊值时⼗分有⽤。
CGdiObject::UnrealizeObject
BOOL UnrealizeObject( );
返回值:如果成功,则返回⾮零值,否则返回零。
说明:
重新设置画刷资源或重新设置逻辑调⾊板。
因为它是CGdiObject类的⼀个成员函数,所以它仅能为CBrush或CPalette对象所使⽤。
对于CBrush对象来说,UnrealizeObject指定系统在下⼀次选择设备上下⽂时重新设置给定的画刷;如果对象是CPalette对象,它指定系统识别该调⾊板,即使以前调⾊板未被识别。
当下⼀次应⽤调⽤CDC::RealizePalette函数时,系统完全重新映射逻辑调⾊板为系统调⾊板。
站长统计
此函数不可与存储对象⼀起使⽤。
当⼀个新的画刷资源被设置(⽤CDC:: SetBrushOrg函数)时,必须调⽤此成员函数。
UnrealizeObject函数不可被当前选⽤的画刷或调⾊板的任何显⽰上下⽂调⽤。
CGdiObject::m_hObject。