mfc 为对话框工程添加工具条时,实现工具条的按下状态与菜单标记的同步实例

本文介绍了一个使用MFC框架的应用程序如何通过更新菜单项和工具栏按钮的状态来实现功能切换。具体展示了如何根据全局变量的状态改变指定ID的菜单项和工具栏按钮的选择状态,并提供了一种解决菜单项无法响应更新的方法。
摘要由CSDN通过智能技术生成

void CDSCAMDEMODlg::OnUpdateToolWash(CCmdUI* pCmdUI)
{
         CToolBarCtrl& tbc = m_mainToolbar.GetToolBarCtrl();
         if(g_wash){   // 标记菜单、工具按钮是否是选中状态
                pCmdUI->SetCheck(true);
                tbc.CheckButton(ID_WASH,true);
         }
        else{
               pCmdUI->SetCheck(FALSE);
               tbc.CheckButton(ID_WASH,FALSE);
        }

 }

相关方法:

菜单无法响应OnUpdate***时用virtual:ContinueModal(),代码如下:

BOOL CDSCAMDEMODlg::ContinueModal()
{
    // TODO: 在此添加专用代码和/或调用基类
    CMenu*   pMainMenu   =   GetMenu();
    CCmdUI   cmdUI;
    for   (UINT   n   =   0;   n   <   (pMainMenu->GetMenuItemCount());   ++n)
    {
            CMenu*   pSubMenu   =   pMainMenu-> GetSubMenu(n);
            cmdUI.m_nIndexMax   =   pSubMenu-> GetMenuItemCount();
            for   (UINT   i   =   0;   i   <   cmdUI.m_nIndexMax;++i)
            {
                    cmdUI.m_nIndex   =   i;
                    cmdUI.m_nID   =   pSubMenu-> GetMenuItemID(i);
                    cmdUI.m_pMenu   =   pSubMenu;
                    cmdUI.DoUpdate(this,   FALSE);
            }
    }

 return CDialog::ContinueModal();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值