
图23 添加状态栏的窗格
(6) 运行程序,结果如图24所示,其中显示的文本是在前面设置的字符串,显然不能满足我们的要示。我们的目的是将当前文本显示的字体和当前颜色值在这两个窗格中显示出来。

图24 添加窗格后运行的结果
2. 更新状态栏窗格
更新状态栏的窗格是通过映射窗格ID的更新命令事件UPDATE_COMMAND_UI来实现的,但由于在类的属性窗口中不能直接对窗格ID进行事件映射,因此我们需要另寻他法。除了手动添加外,我们还可以使用临时菜单的办法,如下面的过程。
(1) 打开菜单资源,在"格式"菜单中再添加两个菜单项"1"和"2",分别将其ID号设置为ID_STAT_TXTFONT和ID_STAT_TXTCOLOR。
(2) 由于显示的内容与CViewerView类的成员变量直接有关,因此我们在CViewerView类中分别添加菜单项ID_STAT_TXTFONT和ID_STAT_TXTCOLOR的UPDATE_COMMAND_UI事件映射。
(3) 在映射函数中添加如图22所示的代码。

图22 添加的窗格映射代码
(4) 打开"生成"菜单,单击"重新生成解决方案"。
(5) 删除刚才在"格式"菜单中添加的"1"和"2"菜单项。
(6) 运行程序,结果如图23所示。

图23 最后运行结果
本讲中常用操作问题的解决方法
由于Visual C++ .NET的本身原因以及人为的操作不当,导致一些问题的出现,下面就来说明。
问题1:添加的菜单项、是工具按钮的标识的名称可以在属性窗口中修改,但其值却始终为0。
解决办法:在属性窗口中,将标识的名称后面添上"=200"(输入时不加引号),然后按Enter键,这时该标识的值就是200。当然,也可指定其他的值。注意,每一个标识符的值要各不相同。
问题2:在属性窗口的"事件"映射页面中,没有找到要映射的已添加的命令标识,但却发现有的标识不是以符号出现的,而是双数字出现的。
虽然这个问题不是大问题,但是看起来有点别扭。解决的步骤如下:
(1) 打开解决方案资源管理器页面,展开所有节点,右击"资源文件"下的"Viewer.rc",从弹出的快捷菜单中选择"打开方式"。
(2) 在弹出的对话框中选择"源代码(文本)编辑器",如图24所示。

图24 指定打开方式
(3) 单击"打开"按钮,出现资源的文本内容,如图25所示的片断。

图25 菜单文本片断
(4) 找到相应的命令标识,然后将数值改为原来的标识符即可。
问题3:添加的代码也对,就是编译时出现类似"无法打开xxx资源"的错误。
解决办法:打开"生成"菜单,选择"重新生成解决方案",再运行程序,一般这种问题都会解决。
问题4:在运行程序中出现"Viewer fatal error LNK1168: 无法打开 Debug/Viewer.exe 进行写入"编译错误。
解决办法:关闭已执行的应用程序Viewer.exe,然后再编译运行程序。
结束语
在本讲中,我们重点讨论了菜单命令和工具按钮的添加和消息映射,工具栏显示和隐藏的各种快捷方式,以及状态栏的文本显示等内容。在下一讲中,我们将重点进行对话框的界面设计、模式和无模式对话框的创建以及DDV/DDX机制的使用等。