MFC之旅——CMenu

在MFC编程中,一个种资源总有一种类与其对应。如

1.字符串有CString

2.菜单资源有CMenu

3.按钮资源有CButton

等等

类中就封装了有能对此类资源操作的函数。

正题

一、菜单的基本结构


(图一)


(图二)

这就是MFC中的菜单的样子。图中用系统的Paint,标记上了一些序号。这些序号就显得十分重要了。

(图一)中标号的就是菜单(Menu)。(图二)中标号的就是子菜单(SubMenu)。

Remarks

子菜单中有分割线。这个分割线也是算一个位置的哦!这是重点要记住的。

二、菜单操作中的常用函数

1.GetMenu()获取整个菜单的CMenu *

这个函数是CWnd的成员函数。能获取类所对应的窗口所拥有的CMenu资源对应对象的指针。


2.GetSubMenu()是CMenu的成员函数

这个函数是用于获取一个菜单的子菜单。也就是(图二中标号的对应的资源的类的指针)


3.CheckMenuItem(1,2)设置标记(这个标记就是那个√)


1:是索引方式。一种是序号索引,一个是ID号索引。
2:是决定索引方式的参数。

两种方式对应的宏是MF_BYPOSITIONMF_BYCOMMAND。


4.EnableMenuItem()设置子菜单项目的可用性。如果要设置文件或新建...,就必须在框架窗口的构造函数里面把m_bAutoMenuEnable变量设置为FALSE。因为如果没设置默认值是TRUE。这就说明文件和新建这些是由MFC内部自动处理的。你无法更改可用性。


5.如果工具栏的图标的ID号和菜单的ID号一样,那么这两个将会同步。

当然这个也是MFC内部自动处理的结果。


6.在使用UPDATE_COMMAND_UI消息对菜单进行操作时,要注意使用ID号来操作。因为如果使用序号,可能会出问题,因为菜单里面序号的和工具栏的序号不同
if(pCmdUI->m_nIndex == 2)
pCmdUI->Enable();
这种情况下可能Toolbar中的图标可能并不能同步修改。因为Toolbar和Menu中的对应顺序可能有区别。


但是如果是用ID
if(pCmdUI->m_nID == ID_EDIT_CUT)
pCmdUI->Enable();

用ID号的话,就不会出现这样的问题了。


7.InsertMenu() 和 AppendMenu()前者是在中间插入,后者是在后面添加。

这个函数根据参数的不同可以插入菜单项或者是子菜单项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值