关于MFC中动态添加菜单项及其命令响应和即时enable菜单项的问题
孙鑫教学视频第六课关于菜单,在用AppendMenu()动态添加菜单后,由于菜单ID未知,响应ON_COMMAND的方法是重载OnCommand();但现在由于该菜单项没...
孙鑫教学视频第六课关于菜单,
在用AppendMenu()动态添加菜单后,由于菜单ID未知,响应ON_COMMAND的方法是重载OnCommand();
但现在由于该菜单项没有对应的响应函数,菜单项是灰色的,我不想用“m_bAutoMenuEnable”,因为其他一些菜单项的状态还是希望由MFC自动维护。响应菜单项可以重载OnCommand(),但ON_UPDATE_COMMAND_UI的处理却是无法重载的,请问高手该如何处理,谢谢!!
(教学视频的Menu2就是这个问题,在它里面因为请四次输入创建的Menu刚好对应了几个响应函数没有删除所以表现正常,但他的程序里面第五次输入时就会出现前面所说的"菜单变灰问题")
哪位大神能不能给讲讲 展开
在用AppendMenu()动态添加菜单后,由于菜单ID未知,响应ON_COMMAND的方法是重载OnCommand();
但现在由于该菜单项没有对应的响应函数,菜单项是灰色的,我不想用“m_bAutoMenuEnable”,因为其他一些菜单项的状态还是希望由MFC自动维护。响应菜单项可以重载OnCommand(),但ON_UPDATE_COMMAND_UI的处理却是无法重载的,请问高手该如何处理,谢谢!!
(教学视频的Menu2就是这个问题,在它里面因为请四次输入创建的Menu刚好对应了几个响应函数没有删除所以表现正常,但他的程序里面第五次输入时就会出现前面所说的"菜单变灰问题")
哪位大神能不能给讲讲 展开
1个回答
展开全部
AppendMenu添加的菜单项ID可以自己指定啊,所以你完全可以在编译时将该ID对应的ON_COMMAND和ON_UPDATE_COMMAND_UI写好。
BOOL AppendMenu (
UINT nFlags,
UINT nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
第二个参数就可以指定ID。
BOOL AppendMenu (
UINT nFlags,
UINT nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
第二个参数就可以指定ID。
更多追问追答
追问
但是添加的菜单项及其响应是在程序运行时根据用户的输入决定的。
追答
那重载OnCmdMsg处理WM_COMMAND就行了,WM_COMMAND也包含了UPDATE_COMMAND_UI的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询