首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

对话框使用工具条:怎么控制工具条上按钮的状态

2013-09-06 
对话框使用工具条:如何控制工具条上按钮的状态本帖最后由 VisualEleven 于 2013-08-22 16:54:03 编辑在一

对话框使用工具条:如何控制工具条上按钮的状态
本帖最后由 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);//虽然这个函数执行了,但这句话未执行”
要 自己 根据 按钮 逻辑 写个 函数。

热点排行