📄 untitled-37.txt
字号:
66 MFC Windows程序设计(第 2版)
delete dc.Selectob3ect(p01dPen);
但是请不要这样做。虽然这种方法对画笔管用,但不适用于画刷。为什么?因为如果
创建了两个一样的CBrush,则32位Windows通过只创建一个GDI画刷来节省内存,这等于
将两个CBrush指针合起来引用一个HBRUSH。(同HWND确定窗口和HDC确定设备描述表
一样,HBRUSH是唯一确定GDI画刷的句柄。CBrush将HBRUSH封装起来并将HBRUSH句
柄存储在它的m—hobject数据成员中。)由于CDC::Selectohject用到由MFC维护的内部表
格,把从Selectohject返回的HBRUSH句柄转换为CBrush指针,而且该表格形成HBRUSH和
CBrush间的—一映射,所以得到的CBrush指针可能和new返回的CBrush指针不一致。您要
保证将 new返回的指针传送给 delete。这样 GDI对象和 C+十对象就都能被正确地清除了。
2.2.12标尺应用程序
了解GDI和封装了GDI的MFC类的最佳方法是编写程序代码。让我们从简单的应用
程序开始。图2-12包含了标尺的源程序。它在屏幕上画了一个。12英寸的标尺。标尺的输
出见图2-11。
图2-11标尺窗口
Ruler. h
class CMyApp: public CWlnApp
5
public:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -