掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログAのOnButton1()の処理をダイアログBから実行するには? (ID:64442)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
グローバルポインタを使う方法は簡単ですが、 モジュール間の結合が強くなるので通常はお勧めしません。 また、グローバル変数を使ったデータの引き渡しは、 管理が煩雑になるのでC++的にはあまりやりません。 子ウインドウに親のウインドウのポインタを渡しておいて そのポインタを使ってPostMessageやSendMessageで制御した方が モジュール間の結合が弱くなるので組み換え等が楽になります。 なぜかと言うとメッセージハンドラを直接呼ぶと言う事は、 相手がCDlgA等の特定のウインドウに限定されます。 しかし、CWnd*としておいてPostMessage等で制御をすれば、 相手がCWndから派生したクラスであれば、特定のウインドウで無いと 駄目と言う事にならないので流れを汲みかえる時に便利です。 私ならボタンを押した時の処理を別関数(ハンドラでない関数)に しておいてその関数をOnButton1から呼ばせます。 そして子ウインドウは親ウインドウに対してユーザー定義メッセージを ポストして親ウインドウはそのメッセージで受け取り、そのハンドラ内で 上記の別関数を呼ぶようにすると思います。 また、個人的にはハンドラを別の経路から直接は呼ばない方が良いと思います。 (ハンドラはメッセージのディスパッチャから呼ばれる前提で作られているはずだから)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.