2012-04-17 46 views
0

我對CMyDialog有一些控制,如CtrlTree。 我想在CMyDialog類中處理來自CTreeCtrl的消息,如ON_WM_LBUTTONDOWN()如何處理父CDialog上的控制消息?

在MFC中有任何方式將消息流重定向到父級?

+0

你爲什麼要這麼做? MFC架構的重點在於它將來自父代的消息反映到首先生成映像的控件,從而促進封裝,代碼重用和職責分離。 – 2012-04-17 17:43:24

+0

我的老闆給了我這個任務。想要重定向消息流,因爲CDialog上的處理程序已經寫入。我明白這個解決方案與封裝不一致。但是如果我重新定向消息流,項目幾乎就緒。 你對這個主題有什麼想法嗎? – Diego666 2012-04-17 18:05:44

+0

http://stackoverflow.com/questions/1506145/how-to-handle-cedit-mouse-click-in-parent-form – Flot2011 2012-04-17 19:55:47

回答

0

重定向消息的最簡單方法是從控件的ON_WM_LBUTTONDOWN處理程序向父類發送自定義消息(WM_USER + xxx)。

將父級的WM_LBUTTONDOWN處理程序代碼放在一個單獨的方法中,並直接調用此方法。

類似的東西(僞代碼),假設你的現有代碼坐在HandleTreeCtrlLBDown()

CMyTreeCtrl::OnLButtonDown(..) 
{ 
    pParent ->SendMessage(WM_TREECTRLLBDOWN, 0, (LPARAM)this); 
} 

CControlParentDialog::OnTreeCtrlLBDown(wParam, lParam) 
{ 
    HandleTreeCtrlLBDown(); 
}