Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在mfc中,有没有办法在运行时禁用消息映射处理程序?_C++_Mfc - Fatal编程技术网

C++ 在mfc中,有没有办法在运行时禁用消息映射处理程序?

C++ 在mfc中,有没有办法在运行时禁用消息映射处理程序?,c++,mfc,C++,Mfc,我想在运行时禁用其中一些,是否有方法可以这样做?当您想将处理传递给默认对话框过程时,只需调用基类实现即可。例如: BEGIN_MESSAGE_MAP(CGadgetStandardDialog, CStandardDialog) ON_WM_CTLCOLOR() ON_WM_TIMER() ON_WM_RBUTTONDOWN() ON_WM_CONTEXTMENU() ON_BN_CLICKED(IDC_BUTTON_START, &CGadget

我想在运行时禁用其中一些,是否有方法可以这样做?

当您想将处理传递给默认对话框过程时,只需调用基类实现即可。例如:

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()

我在OnMove()中尝试了此操作,但对话框仍在移动。我应该怎么做才能禁用移动?这些消息是发生或正在发生某些事情的通知。例如,OnMove不会移动对话框,它只是通知您对话框已移动。禁用通知不会禁用事件。所以无论你想完成什么,你都是从错误的方向开始的。@CodeDoctorJL WM_MOVING可能更适合你
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   if(m_bDisableProcessing)
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   else
         ......
}