VC++菜单 菜单命令响应函数

目录

菜单

菜单命令响应函数

接上:VC++设置字体 字幕变色功能的实现 DrawText函数 本章小结

接下:


菜单

菜单栏、工具栏和状态栏是组成 Windows 程序图形界面的三个主要元素。大多数Windows应用程序都提供了菜单,作为用户与应用程序之间交互的一种途径。

菜单命令响应函数

首先,新建一个单文档类型的MFC 应用程序,项目名为Menu,解决方案名为ch07。然后编译并运行该程序,可以看到对于这个新建的程序来说,MFC已经帮我们创建了一个菜单,并完成了一些菜单功能。例如单击【文件】菜单下的【打开】菜单命令,即可弹出打开文件对话框。当用户单击某个菜单项时,程序中就会调用这个菜单项的命令响应函数,来完成这个菜单项的功能。

在Visual Studio集成开发环境中,打开资源视图,依次展开节点“Menu”“Menu.rc”“Menu”,可以看到有一个名为IDR_MAINFRAME的菜单资源,它就是刚才我们在Menu应用程序界面中所看到的菜单。这是MFC 应用程序向导为Menu这个单文档程序自动创建的一个主菜单。双击这个菜单资源名称,即可在Visual Studio的左边窗格中打开菜单编辑器

可以看到Menu项下有一个名为IDR_MAINFRAME的菜单资源,它就是刚才我们在Menu应用程序界面中所看到的菜单。这是MFC AppWizard为Menu这个单文档程序自动创建的一个主菜单。双击这个菜单资源名称,即可 VC++开发界面的右边窗格中打开菜单编辑器,如下图所示。 

新建Test:

选中【Test】菜单,在Visual Studio开发环境右下角的属性窗口中,我们看到“杂项”中的ID项是灰色的,如图所示。 

可以用鼠标分别单击【文件】、【编辑】、【视图】和【帮助】菜单,发现它们的ID 项都是灰色的。但是当我们单击这些子菜单下的菜单项时,例如【文件】子菜单下的【新建】菜单项,可以发现它的ID项是可以输入和修改的,如下图所示。 

可以比较一下上图属性窗口中Popup项的值,可以看到前者的Popup项的值是 True,而后者为 False。可以再看看【文件】、【编辑】、【视图】和【帮助】这几个菜单,会发现它们的Popup项的值都是True。在MFC中,Popup类型(值为True)的菜单称为弹出式菜单,Visual Studio默认顶层菜单为弹出式菜单。这种菜单不能响应命令。是不是顶层菜单只能是弹出式菜单呢?当然不是,只要将顶层菜单的 Popup 项的值设置为False,该菜单就不是弹出式菜单,而成为一个菜单项了。例如,把刚才新建的【Test】菜单的 Popup 项的值设为 FALSE,这时它的 ID 项就能够被编辑了,我们可以输入一个 ID号,例如IDM_TEST,如下图 。 

提示:MFC都是采用大写字母来标识资源ID号的。为了与MFC保持一致,程序中也应该使用大写字母来标识ID号。

小技巧:程序中会用到多种资源,在为资源确定其 ID 号时,为了明确区分资源类型,一般都遵循这样一个原则:在“ID”字符串后加上一个标识资源类型的字母,例如,我们给Test菜单项指定的这个ID号就是在“ID”字符串后加了一个字母“M”,表示这是Menu,即菜单资源。以后我们还会遇到光标(Cursor)资源,其ID号是在“ID”字符串后加上一个字母“C”;而图标资源(Icon)的ID号会在“ID”字符串后加上一个字母“I”。也就是说,菜单资源ID号以“IDM_”开始;光标资源ID号以“IDC_”开始;图标资源ID号以“IDI_”开始。

下面为【Test】菜单添加命令响应,可以利用前面介绍的类向导工具来完成。单击Visual Studio菜单栏上的【项目】→【类向导】(或者同时按下键盘上的“Ctrl+Shift+X”组合键),打开类向导,这里,我们打算在框架窗口中响应这个菜单命令,因此在“类名”下拉框中找到CMainFrame并选中,在“对象ID”列表中找到并选中IDM_TEST,在“消息”列表框中选中COMMAND项,如图所示。 

单击【添加处理程序】按钮来增加一个响应函数,这时会弹出如图所示的对话框。在这个对话框中,给出了Test菜单命令响应函数的默认名称:OnTest,可以修改这个名称,本例保持该名称不变,单击【确定】按钮,返回到类向导对话框。这时,在该对话框底部的“成员函数”列表中多了一项,就是新添加的【Test】菜单命令响应函数,如图7.7所示。单击对话框上的【编辑代码】按钮,即可跳转到OnTest函数的定义处。 

新添加的OnTest命令响应函数项:

接上:VC++设置字体 字幕变色功能的实现 DrawText函数 本章小结

接下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米酒馆

鼓励鼓励,鼓励很重要啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值