***************************************************************************************************************************************************************
对于新建的菜单的一个消息,
对于多文档的IDR_xxTYPE的菜单项消息
比如ON_COMMAND(ID_test, Ontest)
首先会被view的ON_COMMAND(ID_test, Ontest这个handler拦截
再doc的
再childframe的
再app的
再mainframe的.
void CMainFrame::Ontest1()
{
// TODO: Add your command handler code here
AfxMessageBox("mainframe");
}
void CSiiApp::Ontest1()
{
AfxMessageBox("app"); // TODO: Add your command handler code here
}
void CChildFrame::Ontest1()
{
// TODO: Add your command handler code here
AfxMessageBox("child");
}
void CSiiDoc::Ontest1()
{
// TODO: Add your command handler code here
AfxMessageBox("doc");
}
void CSiiView::Ontest1()
{
// TODO: Add your command handler code here
AfxMessageBox("view");
}
对于多文档的IDR_MAINFRAME的菜单项消息
先被mainframe的handler拦截
再app的。
对于单文档的菜单项消息
比如 ON_COMMAND(ID_test, Ontest)
首先会被view的ON_COMMAND(ID_test, Ontest)这个handler拦截
再doc的,
再mainframe的.
再app的。
***************************************************************************************************************************************************************
对于mfc预置的菜单的一个消息,对于多文档的。深入浅出MFC p447
深入浅出MFC p726
***************************************************************************************************************************************************************
p461
***************************************************************************************************************************************************************
和界面有关的往往放在CFrameWnd中,和数据有关的可放在CDocument中,和数据的显示有关的可放在CView中
一般放在cview
***************************************************************************************************************************************************************
UPDATE_COMMAND_UI消息
每当选单被拉并尚未显示之前,其命令项(以及对应之工具栏按钮)都会收到UPDATE_COMMAND_UI讯息,一般用于改变菜单项的状态显示
void CSiiView::Ontest1()
{
// TODO: Add your command handler code here
AfxMessageBox("hello");
if (m_bCheck)
{m_bCheck=0;
}
else
{m_bCheck=1;
}
}
void CSiiView::OnUpdatetest1(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bCheck);
// pCmdUI->Enable(0);
}