龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

vc++技术内幕(第四版)笔记(第5章)(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
9,CGdiObject类有一个虚析构函数,在其派生类的析构函数将与C++对象相关联的WINDOWS GDI对象删除掉。如果构造了一个CGdiObject派生类对象,则在退出程序之前

9,CGdiObject类有一个虚析构函数,在其派生类的析构函数将与C++对象相关联的WINDOWS GDI对象删除掉。如果构造了一个CGdiObject派生类对象,则在退出程序之前,必须将其删除掉。

利用CDC类的SelectObject成员函数把自己的GDI对象选进DC的同时,保存原来的GDI对象,当任务完成后,恢复原来的GDI对象,这样就可以将自己的GDI对象的删除掉。

如:

GDIStyle *poldGdiObject=pDC->SelectObject(&newGdiObject);
.//完成任务
pDC->SelectObject(poldGdiObject);

10,Windows对任何企图删除库存GDI对象的行为都不予理会。可以利用SelectObject函数把库存GDI对象选入,从而删除当前GDI对象。

原因:

This function SelectObject may return a pointer to a temporary object. This temporary object is only valid during the processing of one Windows message.

如:

pDC->SelectObject(&newGdiObject);
...
pDC->SelectStockObject(StockCGdiObject);//如:BLACK_BRUSH

11,对于显示设备环境,在消息处理函数内部所进行GDI选择在函数退出后不再有效,因此在进入其他处理函数的时候,每次都必须重新设置设备环境。

Windows句柄是唯一能够持久存在的GDI标识。可以使用GDI对象指针调用GetSafeHandle函数可以获得它Windows句柄,再利用GDI对象类的FromHandle函数将句柄转化为对应的GDI对象。

如:

CFont *pOldFont=pDC->SelectObject(&newFont);
m_hOldFont=(HFONT)pOldFont->GetSafeHandle();//m_hOldFont为数据成员,保存先前字体对象句柄
...
pDC->SelectObject(CFont::FromHandle(m_hOldFont));//可在其他函数中,恢复m_hOldFont句柄对应的字体对象。

说明:

1)static CFont* PASCAL FromHandle( HFONT hFont );

//CFont::FromHandle Returns a pointer to a CFont object when given an HFONT handle to a Windows GDI font object. If a CFont object is not already attached to the handle, a temporary CFont object is created and attached.

2)CGdiObject::GetSafeHandle();

//Return A HANDLE to the attached Windows GDI object; otherwise NULL if no object is attached.

12,每一种Windows颜色都是 通过8位的红(R)、绿(G)、蓝(B)的值祝贺来表示的。

面向颜色的GDI函数可以接收32位的COLORREF参数。Windows的RGB宏可以将8位的红绿蓝值转化成COLORREF参数。

1)The COLORREF value is a 32-bit value used to specify an RGB color.

2)16种标准VGA纯色参见 P70页;256显示卡 多增加4种标准色参见 P71页。

13,字体是GDI对象,在使用上和其它的GDI对象完全一样。

CDC::GetTextMetrics 
BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;//测量字体高度等参数

14,GetDeviceCaps();

//Retrieves a wide range of device-specific information about the display device.

精彩图集

赞助商链接