0
我對CMyDialog
有一些控制,如CtrlTree
。 我想在CMyDialog
類中處理來自CTreeCtrl
的消息,如ON_WM_LBUTTONDOWN()
。如何處理父CDialog上的控制消息?
在MFC中有任何方式將消息流重定向到父級?
我對CMyDialog
有一些控制,如CtrlTree
。 我想在CMyDialog
類中處理來自CTreeCtrl
的消息,如ON_WM_LBUTTONDOWN()
。如何處理父CDialog上的控制消息?
在MFC中有任何方式將消息流重定向到父級?
重定向消息的最簡單方法是從控件的ON_WM_LBUTTONDOWN處理程序向父類發送自定義消息(WM_USER + xxx)。
將父級的WM_LBUTTONDOWN處理程序代碼放在一個單獨的方法中,並直接調用此方法。
類似的東西(僞代碼),假設你的現有代碼坐在HandleTreeCtrlLBDown()
CMyTreeCtrl::OnLButtonDown(..)
{
pParent ->SendMessage(WM_TREECTRLLBDOWN, 0, (LPARAM)this);
}
CControlParentDialog::OnTreeCtrlLBDown(wParam, lParam)
{
HandleTreeCtrlLBDown();
}
你爲什麼要這麼做? MFC架構的重點在於它將來自父代的消息反映到首先生成映像的控件,從而促進封裝,代碼重用和職責分離。 – 2012-04-17 17:43:24
我的老闆給了我這個任務。想要重定向消息流,因爲CDialog上的處理程序已經寫入。我明白這個解決方案與封裝不一致。但是如果我重新定向消息流,項目幾乎就緒。 你對這個主題有什麼想法嗎? – Diego666 2012-04-17 18:05:44
http://stackoverflow.com/questions/1506145/how-to-handle-cedit-mouse-click-in-parent-form – Flot2011 2012-04-17 19:55:47