MFC菜单命令更新机制---用该机制实现 Enable or Disable MenuItem
方法:
1)用资源中的菜单项"剪切"的ClassWizard添加一个UPDATE_COMMAND_UI消息响应函数
void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)
同时发现MFC在MainFrm.cpp的消息映射代码处添加了一个宏:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{
{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut) //关联CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI) 的宏
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
MFC就是由消息映射表中的宏来调用关联的消息响应函数,对消息做出响应.
2) 在消息响应函数OnUpdateEditCut(CCmdUI* pCmdUI)中:
pCmdUI->Enable(true); //就可以Enable "剪切",由灰色变成激活了.
//
//---
因为工具栏上的剪刀图标的index并不等于2,工具栏这个横条是一个整体,剪刀的index=4
------> 0,1,2(保存),3(分隔条),4(剪刀)
//---
//---
//---
菜单和工具栏图标都激活: 最简单就是不要用if()判断,直接Enable
pCmdUI->Enable(true);
//--- 代码都是在CMainFrame的MainFrm.cpp中干活,为什么不在CMenuVie类,CMenuDoc类中干活? 其实都可以.
OnTest中实验COMMAND的响应顺序是CMenuView--->CMenuDoc--->CMainFr