2012-04-17 5 views
0

CtrlTreeのようなコントロールがあります。 CMyDialogクラスのCTreeCtrlからON_WM_LBUTTONDOWN()のようなメッセージを処理したいと思います。親CDialogで制御メッセージを処理するにはどうすればよいですか?

メッセージストリームを親にリダイレクトする方法はありますか?

+0

あなたがそれをやりたいのはなぜ? MFCのアーキテクチャ全体のポイントは、カプセル化、コードの再利用、および責任の分離を促進するイメージを最初に生成した親からコントロールへのメッセージを反映することです。 –

+0

私の雇用主が私にその仕事を与えてくれます。 CDialogのハンドラが既に書かれているので、メッセージストリームをリダイレクトしたい。このソリューションはカプセル化に同意しないと私は理解しています。しかし、私がメッセージ・ストリームをリダイレクトすると、プロジェクトはほぼ準備が整います。 このトピックについてのご意見はありますか? – Diego666

+0

http://stackoverflow.com/questions/1506145/how-to-handle-cedit-mouse-click-in-parent-form – Flot2011

答えて

0

メッセージをリダイレクトする最も簡単な方法は、コントロールのON_WM_LBUTTONDOWNハンドラからカスタムクラス(WM_USER + xxx)メッセージを親クラスに送信することです。

親のWM_LBUTTONDOWNハンドラコードを別のメソッドに置き、このメソッドを直接呼び出します。

既存のコードがHandleTreeCtrlLBDownに座っていると仮定そのような何か(擬似コード)、()

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

CControlParentDialog::OnTreeCtrlLBDown(wParam, lParam) 
{ 
    HandleTreeCtrlLBDown(); 
} 
関連する問題