開発環境 VC++ Ver6.0 SP6 MFC使用
OS Windows XP HOME(最終的にはXP Pro)
ここで教えた頂いた方法で、ダイアログベースのアプリから、DoModalを使って子ダイア
ログを作り出すアプリを作成いたしました。
この後、子ダイアログのボタンクリックで、親ダイアログが作ったワーカースレッドに
イベントを飛ばして、処理をさせようと思うのですが、そんな事って出来るのでしょうか
本を調べていたら、ワーカースレッドに対して、イベントの発生を知らせるには、
CEventクラスを使い、ワーカースレッド作成時にポインターを渡すことで親ダイアログと
のイベントのやり取りは出来るように書いてあったのですが、子ダイアログとの間でも可
能なのでしょうか?
何となく、子ダイアログを親ダイアログから派生させて、親ダイアログのメンバである
イベントを使えば出来るような気もするのですが。
済みません、VC++は初心者なのでよくわかっておりません。
どうぞご教授願います。
PostThreadMessage とかで可能だと思います。
スレッドは、グローバル関数ですよね。
だとしたら、イベントの変数もグローバルにして、「WaitForSingleObject」等で
待ってあげればOKです。
ただ、数人でソフトを作るとなると、変数のグローバル化は、よくないかも知れません
ね。
ワーカスレッドのパラメータに親ダイアログのthisポインタを渡し、
イベント変数を親ダイアログに持たせる。
子ダイアログには、イベント変数の参照かポインタを持たせれば、
グローバルにはならないかな。
試してみる価値は、あると思います。
親ダイアログの「this」ポインターをスレッドに渡してスレッド上で親ダイアログの
関数を実行することも
よくやります。
スレが遅れて申し訳ありませんでした。
シャノンさん、ITOさん、KJさん、貴重なアドバイスを有り難う御座います。
お教えいただいた方法で、試してみます。
ただ、会社でなければ確認できないので(プロジェクトを持って帰るのを忘れてしまいました)
月曜に結果の書き込みをさせていただきたいと思います。
結果次第では、また、皆さんにいろいろと相談をさせていただくことがあるかもしれませんが、
何卒宜しく御願いいたします。
子ダイアログ生成時に親ダイアログの「this」ポインタを引き渡し、同じように、
親ダイアログから起動されるワーカースレッドに対しても、「this」ポインタを
引数で渡して、イベント変数を監視させる方法で、子ダイアログからワーカースレッド
へイベント通知出来るようになりました。
シャノンさん、ITOさん、KJさん、アドバイスを頂き有り難う御座いました。