📄 untitled-19.txt
字号:
Create为程序员提供了极其繁多的选项。在初学阶段,大量的可选内容可能使您无所
适从,如果您以前没有开发过Windows程序,尤其会这样。但是随着经验积累,您就会懂得
什么时候、如何利用这些选项了。而且,如果您所需要的只是一个标准的CFramewnd类型
的窗口,那么类库就可以使用默认函数参数为您隐藏许多复杂的内容。这也正是MFC使
Windows程序设计变得稍微容易了一些的一个例子。
1.3.4绘制窗口
Hello程序不能随心所欲地在屏幕上进行绘制。相反,它是通过响应来自Windows的
WM.PAINT消息进行绘制的,此消息通知它该更新窗口了。
WM.PAINT消息的发生可以有多种原因:由于移动了另一个窗口;由于Hello的窗口原
先被遮盖的一部分显露出来了;或者由于窗口的大小改变了。不论诱因是什么,都要由应用
程序来负责通过响应WM—PAINT消息绘制其窗口的客户区。由Windows来绘制非客户区,
这样所有的应用程序将具有一致的外观。但是,如果应用程序不为客户区执行其自身的绘
制例程,那么窗口的内部将是一片空白。
在 Hello程序中, WM—PAINT消息由 CMainwindow:: onPaint来处理,当一个 WM—PAINT
消息抵达时都将调用它。OnPaint的工作就是在窗口客户区的中央位置绘制“Hello,MFC”。
它是通过构造一个名为dc的CPaintDC对象开始的:
CPaintDC dc(this);
MFC的CPaintDC类是从MFC的更为一般的CDC类派生的,CDC类封装了Windows设备
环境,以及包含了绘制到屏幕、打印机和其他设备的几十个成员函数。在Windows中,所有
的图形输出都通过设备环境对象执行,设备环境对象抽象了输出的物理目的地。CPaintDC
只在WM.PAINT消息处理程序中使用,它是CDC的一个特殊例子。应用程序在响应WM一
PAINT消息进行绘制之前,必须调用 Windows的:: BeginPaint API函数来获取一个设备环境,
以准备将此设备环境用于绘制。当应用程序完成了绘制时,它必须调用:: EndPaint来释放
设备环境和通知Windows绘制已经完成。如果应用程序在处理WM.PAINT消息时不能调
用:: BeginPaint和:: EndPaint,那么该消息将不会从消息队列中删除。不足为怪的是, CPaint-
DC将从其构造函数调用:: BeginPaint和从其析构函数调用:: EndPaint来确保不出现这样的
情况。
在”’C中,您一般都使用某种类型的 CDC对象在屏幕上进行绘制,但储必须仅在
onPaint程序内使用CPaintDC对象。此外,在栈上创建CPaintDC对象是良好的编程习惯,这
样当onPaint结束时将自动调用它们的析构函数。如果需要,您可以使用new操作符来实例
化一个CPaintDC对象,但是,在onPaint结束之前删除那个对象将变得至关重要。否则,
:: EndPaint将不会被调用,而且您的应用程序也将不能正确地重新绘制。
在创建了CPaintDC对象之后,onPalnt将构造一个代表矩形的CRect对象,并调用CWnd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -