0
にCtrlTree
のようなコントロールがあります。 CMyDialog
クラスのCTreeCtrl
からON_WM_LBUTTONDOWN()
のようなメッセージを処理したいと思います。親CDialogで制御メッセージを処理するにはどうすればよいですか?
メッセージストリームを親にリダイレクトする方法はありますか?
にCtrlTree
のようなコントロールがあります。 CMyDialog
クラスのCTreeCtrl
からON_WM_LBUTTONDOWN()
のようなメッセージを処理したいと思います。親CDialogで制御メッセージを処理するにはどうすればよいですか?
メッセージストリームを親にリダイレクトする方法はありますか?
メッセージをリダイレクトする最も簡単な方法は、コントロールのON_WM_LBUTTONDOWNハンドラからカスタムクラス(WM_USER + xxx)メッセージを親クラスに送信することです。
親のWM_LBUTTONDOWNハンドラコードを別のメソッドに置き、このメソッドを直接呼び出します。
既存のコードがHandleTreeCtrlLBDownに座っていると仮定そのような何か(擬似コード)、()
CMyTreeCtrl::OnLButtonDown(..)
{
pParent ->SendMessage(WM_TREECTRLLBDOWN, 0, (LPARAM)this);
}
CControlParentDialog::OnTreeCtrlLBDown(wParam, lParam)
{
HandleTreeCtrlLBDown();
}
あなたがそれをやりたいのはなぜ? MFCのアーキテクチャ全体のポイントは、カプセル化、コードの再利用、および責任の分離を促進するイメージを最初に生成した親からコントロールへのメッセージを反映することです。 –
私の雇用主が私にその仕事を与えてくれます。 CDialogのハンドラが既に書かれているので、メッセージストリームをリダイレクトしたい。このソリューションはカプセル化に同意しないと私は理解しています。しかし、私がメッセージ・ストリームをリダイレクトすると、プロジェクトはほぼ準備が整います。 このトピックについてのご意見はありますか? – Diego666
http://stackoverflow.com/questions/1506145/how-to-handle-cedit-mouse-click-in-parent-form – Flot2011