2013-12-21 37 views
0
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() 

我想在運行時禁用其中的一些,有沒有這樣做的方法?有沒有辦法在運行時禁用消息映射處理程序,在mfc中?

回答

0

當您想要將處理傳遞給默認對話框過程時,只需調用基類實現。例如:

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

我嘗試了這個我的OnMove(),但對話框仍在移動。我該怎麼做才能禁用移動? – CodeDoctorJL

+1

這些消息是有關發生或正在發生的事件的通知。例如,OnMove不會移動對話框,它只是通知您對話框已移動。禁用通知將不會禁用事件。所以無論你想要達到什麼目的,你都會從錯誤的結局中走出來。 –

+0

@CodeDoctorJL WM_MOVING可能更適合你 – manuell

相關問題