有没有办法在 MFC 中在运行时禁用消息映射处理程序

is there a way to disable message map handlers during runtime, in mfc?

本文关键字:消息 映射 处理 程序 运行时 MFC 有没有      更新时间:2023-10-16
BEGIN_MESSAGE_MAP(CGadgetStandardDialog, CStandardDialog)
    ON_WM_CTLCOLOR()
    ON_WM_TIMER()
    ON_WM_RBUTTONDOWN()
    ON_WM_CONTEXTMENU()
    ON_BN_CLICKED(IDC_BUTTON_START, &CGadgetStandardDialog::OnBnClickedButtonStart)
    ON_WM_CLOSE()
    ON_WM_MOVE()
    ON_WM_LBUTTONDOWN()
    //ON_WM_NCHITTEST()
END_MESSAGE_MAP()

我想在运行时禁用其中一些,有没有办法这样做?

只需在要将处理传递给默认对话框过程时调用基类实现。例如:

HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   if(m_bDisableProcessing)
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   else
         ......
}