【MFC】CDialogBar中按钮不可用

现象展示:

【MFC】CDialogBar中按钮不可用

具体原因:

A button in a CDialogBar object is disabled automatically if the command routing does not contain a command handler function for the button.
To enable a button in a CDialogBar object, the command routing must include a command handler for the button.

NOTE: Because the CDialogBar object is not included in the routing scheme, the ON_BN_CLICKED() or ON_COMMAND() handler must be placed in one of the objects mentioned above that is in the routing scheme and not in the CDialogBar class.

解决办法:

1、如果按钮的消息处理是在CMainFrame中的就不用OnUpdateCmdUI,在其他类的话还是要重载OnUpdateCmdUI的

2、重载CMainFrame::OnCmdMsg函数

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
if(m_wndDlgBar.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
{
return TRUE;
}
return CMDIFrameWndEx::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

3、重载CDialogBar::OnUpdateCmdUI

void CMyDialogBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHandler)
{
CDialogBar::OnUpdateCmdUI(pTarget, FALSE);
}
上一篇:wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码


下一篇:git指令总结