📄 untitled-03.txt
字号:
32 MFC Window。程序设计(第2版)
允许在窗口内任一地方画图的设备描述表CDC指针(与只允许在窗口客户区画图的设备描
述表 CDC指针不同),需要调用 CWnd:: GetwindowDC而不是 GetDC,但仍用 ReleaseDC来释
放设备描述表。
为避免要记住获取和释放设备描述表时需调用的函数(并且为确保在使用设备描述表
的消息处理程序结束时设备描述表能合理地被释放),MFC提供了一些CDC派生类,如表
2.1所示。
一表2.1专门用途的设备描述表类
类名描述
CPaintDC用于在窗口客户区画图(仅限于onPaint处理程序)
CClientDC用于在窗口客户区画图(除onPaint外的任何处理程序)
CWindowDC用于在窗口内任意地方画图,包括非客户区
CMetaFileDC用于向GDI元文件画图
这些类被设计为可直接进行实例化。各个类的构造函数和析构函数调用相应的函数捕
获和释放设备描述表,从而使得设备描述表的使用非常方便简捷:
CPaintDC dc(this);
// DO S0rne drawing
传送给类构造函数的指针确定了设备描述表所属的窗口。
当在栈上构造设备描述表对象时,若对象的生命周期结束,则它的析构函数会被自动调
用。而且析构函数一旦被调用,设备描述表就会被返回给Windows。在堆上用new创建设备
描述表时,要注意亲自释放设备描述表。示例如下:
CPaintDC。 pDC= newCPaintDC(this);
在这种情况下,有必要在创建设备描述表的函数结束之前执行删除语句
d616t6 pDC;
以便调用对象的析构函数和释放设备描述表。在某些场合下,在堆上创建设备描述表要比
在栈上创建更有用,但通常在栈上创建设备描述表对象并让编译程序执行删除任务会使您
轻松很多。
CPaintDC类
MFC的CPaintDC类响应WM_PAINT消息,允许您在窗口客户区画图。但您只能在
onPaint处理程序中,而不能在其他地方使用它。WM_PAINT消息在一个很重要的方面不同
于其他 Windows消息;如果处理程序调用 Windows的:: BeginPant和:: EndPaint函数失败(或
MFC等价函数, CWnd:: BeginPaint和 CWnd:: EndPaint),那么不管有多少绘图工作,都不能将
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -