• 【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);
    }
  • 相关阅读:
    cmd登录系统用户
    Js操作Cookie
    Tomcat 调优方案
    Oracle 服务启动关闭
    Mysql服务启动与关闭
    JSP中的隐含对象
    JSP指令
    Js的String对象
    js排序
    MyBatis系列目录--5. MyBatis一级缓存和二级缓存(redis实现)
  • 原文地址:https://www.cnblogs.com/yvqvan/p/8574242.html
Copyright © 2020-2023  润新知