读书人

对话框使用工具条:怎么控制工具条上按

发布时间: 2013-09-06 10:17:17 作者: rapoo

对话框使用工具条:如何控制工具条上按钮的状态
本帖最后由 VisualEleven 于 2013-08-22 16:54:03 编辑 在一个非模态对话框上记载了一个工具条,其上有按钮(RC内编辑)和动态创建的ComboBox,
现在的问题是根据不同状态要控制工具条上各个按钮的状态(可用与不可用),遇到的问题是
RC内编辑的按钮无法控制(ComboBox没有问题),代码如下:

ON_UPDATE_COMMAND_UI(ID_CV_SINGLE_LINE_TYPE, OnUpdateSingleLineBtn)

void CTestDlg::OnUpdateSingleLineBtn(CCmdUI* pCmdUI){

pCmdUI->Enable( !m_ucMonitorStart );//这个函数根本不执行。
}


调查发现需要使用WM_INITMENUPOPUP,也追加了,代码如下:
ON_WM_INITMENUPOPUP()

void CTestDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);

// TODO: Add your message handler code here
if(!bSysMenu && pPopupMenu)
{
CCmdUI cmdUI;
cmdUI.m_pOther = NULL;
cmdUI.m_pMenu = pPopupMenu;
cmdUI.m_pSubMenu = NULL;

UINT count = pPopupMenu->GetMenuItemCount();
cmdUI.m_nIndexMax = count;
for(UINT i=0; i<count; i++)
{
UINT nID = pPopupMenu->GetMenuItemID(i);
if(-1 == nID || 0 == nID)
{
continue;
}
cmdUI.m_nID = nID;
cmdUI.m_nIndex = i;
cmdUI.DoUpdate(this, FALSE);
}
}
}

这个函数也不执行,到底什么地方错了呢?
[解决办法]
看上去好像没有什么问题,检查一下消息映射加的地方对不?
[解决办法]
不要使用“ UpdateDialogControls(this,true);//虽然这个函数执行了,但这句话未执行”
要 自己 根据 按钮 逻辑 写个 函数。

读书人网 >VC/MFC

热点推荐