📄 untitled-20.txt
字号:
:: GetClientRect以使用窗口的客户区的坐标来初始化这个矩形:
CRect rect;
GetCI。entRect(&rect);
OnPaint然后调用 CDC:: DrawTeXt在窗口的客户区中显示“Hello, MFC”:
dc.DrawText(T(”Hel工。,MFC”),-l,&rect,
DT.SINGLELINE j DT.CENTERI DT_VCENTER);
DlawText是一个用于输出文本的功能强大、用途广泛的函数。它接收4个参数:一个指向待
显示的字符串的指针、字符申中的字符数(或者一1,如果字符串是以NULL字符终止的)、指
定格式矩形的一个RECT结构或者CRe。t对象的地址,以及指定输出选项的标记。在Hello
中, CMainwindow:: onPaint组合了 DTSINGDeLINE、DTCENTER和 DTVCENTER标记,以
显示一个在格式矩形中水平居中和垂直居中的单行文本。rect描述了窗口的客户区,因此
输出结果在窗口中完全居中。
DrawText的参数列表中明显缺少的是指定输出的基本属性(比如字体和文本颜色)的参
数。这些和其他的输出特征都是设备环境的属性,可以使用 CDC成员函数,比如 Select-
object和 SetTextColor等来控制。由于 Hello不更改设备环境的任何属性,因此将使用默认的
字体和默认的文本颜色(黑色)。DrawText还使用设备环境的当前背景颜色在它所输出的文
本的周围填充一个小矩形。这个默认的颜色是白色,因此,如果系统的默认窗口背景颜色碰
巧也是白色,那么您将看不到该矩形。但是,如果将窗口背景颜色更改为灰色,那么白色的
文本背景将像疼痛的拇指那样醒目。
在第2章中,您将学会如何通过修改设备环境属性来自定义DrawText和其他CDC绘图
函数的输出。一旦您知道了怎样做之后,更改文本颜色或者告诉DrawText使用“透明”的像
素来绘制文本背景将非常简单。
1.3.5消息映射
来自 Windows的 WM. PAINT消息是如何转换为一个对 CMainwindow:: onPaint的调用的
呢?答案就在于消息映射。消息映射是一个将消息和成员函数相互关联的表。当Hell。的
框架窗口接收到了一个消息,MFC将搜索该窗口的消息映射,如果存在一个处理WM一
PAINT消息的处理程序,然后就调用OnPdint。消息映射是MFC避免使用冗长的虚表的一种
方式,如果每个类对它可能会接收到的每个可能消息都有一个虚拟函数,那么就需要虚表。
从CCmdTopt派生的任何类都可以包含消息映射。MFC为执行消息映射在内部所做的工
作隐藏在某些十分复杂的宏当中,但“使用”消息映射是相当简单的。下面就是您将消息映
射添加到一个类中需要做的全部工作:
1.通过将DECLARE_MESSAGE_MAP语句添加到类声明中,声明消息映射。
2.通过放置标识消息的宏来执行消息映射,相应的类将在对BEGIN.MESSAGE—MAP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -