多文档时,主框架和模板用的不是一个菜单,菜单资源的ID相同,名称也相同
当点击其中一个菜单项,比如"拷贝",我想程序在无文档,和有多个文档的情况下
做同样的反映,并保持菜单的状态是一致的(特别是这点不清楚),如点击菜单
“进行拷贝”项,命令为ON_COMMAND命令,对应的处理函数OnCopy(),
在有文档和无文档时都掉这个处理函数。还有:如何在CMainFrame和CView
两个类中获取到当前所加载的菜单的指针?在有、无文档的情况下获取主框架的菜单很容易:
CMainFrame中用AfxGetMainWnd()->GetMenu()->GetSubMenu(?)->?但,在有文档的情况下,如何获取到当前加载的菜单指针并操作?
当点击其中一个菜单项,比如"拷贝",我想程序在无文档,和有多个文档的情况下
做同样的反映,并保持菜单的状态是一致的(特别是这点不清楚),如点击菜单
“进行拷贝”项,命令为ON_COMMAND命令,对应的处理函数OnCopy(),
在有文档和无文档时都掉这个处理函数。还有:如何在CMainFrame和CView
两个类中获取到当前所加载的菜单的指针?在有、无文档的情况下获取主框架的菜单很容易:
CMainFrame中用AfxGetMainWnd()->GetMenu()->GetSubMenu(?)->?但,在有文档的情况下,如何获取到当前加载的菜单指针并操作?
解决方案 »
- 可不可在内存中生成一个虚拟文件,能够进写读写操作?
- access添加新数据,总是不能添加到记录最后一条。求解!
- 求助串口16进制发送问题
- 均衡器中各种类型(pop,jazz)中对各个频率的设置值有标准么(再发)
- 使用winhttp post东西到某个页面,如何post多个数据?
- da bu chu zhong wen
- 想做一套带编译功能的IDE,请教思路,集思广益:)
- 目前在计算机上使用的动画格式有多少种呢?
- mpr.dll在vc++project中的编译链接问题
- 急,如何在WIN98下显示长文件名
- 使用DB2根据已有的表创建一个视图的语法,要完整的代码,帮帮啊
- VC中多文档时,怎么添加菜单和菜单响应?
由于获取某一个菜单项的指针比较困难,但MFC提供了UI更新的消息,只要在程序中添加想要处理的菜单项的更新消息响应函数,即可。UI更新的消息:ON_UPDATE_COMMAND_UI
说明:ON_UPDATE_COMMAND_UI只要是点击到pop菜单(比如File,Edit,Help这些),命令就会触发添加消息映射
.h文件在宏内添加:
//{{AFX_MSG(CMultiDocMenuAddView)
afx_msg void OnUpdateViewToolbar(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP().cpp件在宏内添加:
BEGIN_MESSAGE_MAP(CMultiDocMenuAddView, CView)
//{{AFX_MSG_MAP(CMultiDocMenuAddView)
ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateViewToolbar)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()处理函数:
void CMultiDocMenuAddView::OnUpdateViewToolbar(CCmdUI* pCmdUI)
{
//添加想要的更新状态,如果点击的是一个菜单,CCmdUI入参的成员m_pSubMenu即对应着
//ID_VIEW_TOOLBAR菜单项,直接操作它就可以了,不需要通过别的函数去获取,比较方便
}还有另一个消息ON_COMMAND,和ON_UPDATE_COMMAND_UI消息类似,不过是在你点击到某一个
菜单项(比如File菜单下的Open,Exit等)时触发的,ON_UPDATE_COMMAND_UI应该是在ON_COMMAND
之前触发,它在菜单下拉之前触发,而ON_COMMAND是在菜单下拉之后,点击到某下拉项时触发,所以如果要更新某菜单项的状态,如被勾选,变灰,不可用等等,都可以在ON_UPDATE_COMMAND_UI关联的
处理函数中处理。现在,我的问题就是通过这两消息关联来进行处理。
由于我还要同时处理两个菜单项情况,于是用了一个成员变量来保存其中一个菜单的选择状态,一个值对应一个菜单进行的处理,其中ON_COMMAND命令处理函数里赋值给变量,ON_UPDATE_COMMAND_UI命令处理函数通知更新菜单项的状态,达到我的目的。可能大家还有更好的方法,欢迎发表意见。