Visual C .NET编程讲座之四(2)

来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:53:37
(7) 重复上述步骤,在"格式"菜单下再添加一个菜单项"文本颜色(&C)",ID为ID_FORMAT_TXTCOLOR,结果如图3所示。

图3 添加的菜单
 
(8) 单击"格式"菜单不松开,然后将其拖放到"视图"和"帮助"之间。
2. 菜单的命令映射
此时运行程序,则"格式"菜单下的命令都是"灰显"(即显示的颜色是灰色的)的,我们无法选择相应的菜单命令,这是因为我们还没有对菜单的命令消息进行映射。下面就来进行映射,由于我们添加的这些菜单命令是想更改变文本内容显示的字体,因此我们将菜单命令的映射添加到视图类CViewerView中,如下面的过程:
(1) 将解决方案资源管理器切换到"类视图",展开节点,选定"CViewerView",在其属性窗口中,单击"事件"按钮,结果如图4所示。

图4 事件映射
 
(2) 找到前面添加的菜单项ID_FORMAT_TXTFONT,单击该ID前面的"+",展开后出现可以映射的消息,由于菜单消息是命令消息,因为我们在COMMAND消息框的右侧,单击后选择"<添加>OnFormatTxtfont",如图4所示。这样相应的映射就被添加到CViewerView类中,此时文档窗口中自动定位到该函数的实现代码处。

图5 映射COMMAND消息
 
(3) 重复上一步为菜单项ID_FORMAT_TXTCOLOR添加COMMAND消息映射。
注意:同一命令消息的响应是根据对象的级别来决定的,对于单文档应用程序来说,各对象的级别从高到低依次为视图类(文档窗口)、文档类、主框架窗口类、应用程序类。
3. 完善"格式"菜单代码
(1) 为CViewerView类添加两个成员变量(添加成员变量的方法上一讲已讨论过),一个是LOGFONT类型的m_lfTextFont,另一个是COLORREF类型的m_crTxtColor。LOGFONT是逻辑字体类型,所谓"逻辑字体",它是应用程序对于理想字体的一种描述方式。在使用逻辑字体绘制文字时,系统会采用一种特定的算法把逻辑字体映射为最匹配的物理字体(实际安装在操作系统中的字体)。而COLORREF是专门用来定义RGB颜色的数据类型,RGB颜色是通过红(R)、绿(G)、蓝(B)三种基色分量的不同值混合而成的。
(2) 在构造函数CViewerView::CViewerView()中添加上述两个成员变量的初始化代码,如图5所示。

图6 在CViewerView类构造函数中添加的代码
 
(3) 在CViewerView::OnFormatTxtfont()函数中添加如图6所示的代码。

图7 OnFormatTxtfont()函数代码
 
CFontDialog类为我们提供了字体及其文本颜色选择的通用对话框,在构造对象中指定m_lfTextFont指针,其目的是用来设置对话框显示的逻辑字体,这样当下一次显示字体对话框时,就会显示当前的字体特性。
(4) 在CViewerView::OnFormatTxtcolor()函数中添加如图7所示的代码。

图8 OnFormatTxtcolor()函数代码
 
CColorDialog类封装了通用颜色对话框的全部操作。在定义对话框对象时,可以指定默认选定的颜色值,若不指定,则默认颜色值为RGB(0,0,0)(黑色)。
(5) 修改CViewerView::OnDraw()函数代码,如图8所示的加框部分。

图9 修改后的OnDraw()函数代码
 
(6) 运行程序,打开当前目录中的ReadMe.txt文档,打开"格式"菜单,选中相应的菜单命令,改变其字体和颜色。图9是其中的一个结果。

图10 运行后的程序结果