環境:Visual Studio 2008 MFC
現在、CTabCtrlを使用したプログラミングを行っております。
そこで質問なのですが、タブに表示する子ダイアログから、タブを所持する親ダイアログに
メッセージを送るには、どのような手段があるのでしょうか?
具体的には、子ダイアログに貼り付けられたボタンを押下したメッセージを、
親ダイアログで処理したいと考えています。
すみません、途中で送信してしまいました…。
以下は先の質問の続きです。
私が単純に思いついた方法は…
①子ダイアログでクリックイベントを取得。
②親ダイアログに独自定義メッセージを送信。(どのボタンがクリックされたのかを通知)
というものでした。
これでも実現可能なのですが、子ダイアログで発生したメッセージを、
親ダイアログに全て通知するような方法はないのでしょうか?
以上、宜しくお願い致します。
独自メッセージでも良いですが、Tab毎のDLG全てにわたって
対象のボタンなどのコントロールのIDが全てユニークならば
(重複してなければ)そのままWM_COMMANDを当該の親に送ってもOKですね。
コマンドの「リフレクト」と言う場合もあるようです。
IDが重なっている場合でも、当該の親が、現在のカレントのDLGが
どれであるかを認識していれば、判定はできますしね。
返信有り難う御座います。
WM_COMMANDを使用した方法で無事実装を行えました。
本当に有り難う御座います!
-----------------------------------------------------------------
BOOL CChildDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
BOOL ret = CDialog::OnCommand(wParam, lParam);
// 子ダイアログで処理を行わなかった場合は、
// 親ダイアログに処理を通知する。
if (!ret)
{
GetParent()->SendMessage(WM_COMMAND, wParam, lParam);
}
return ret;
}
-----------------------------------------------------------------