vc view doc frame和消息流向,UPDATE_COMMAND_UI

***************************************************************************************************************************************************************
对于新建的菜单的一个消息,
对于多文档的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);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值