電子書籍の厳選無料作品が豊富!

お世話になります、fujitomoです。
C++のダイアログベースのプログラムを作成しているのですが、ご質問
させていただきたい件がありまして、こちらへ書かせて頂きました。

質問させて頂きたい内容は、メインダイアログにて、他ダイアログをAfxBeginThread()を用いて別スレッドでモーダル表示させた時、その他ダイアログを他ダイアログ内でEndDialog(IDOK)で閉じた際に、メインダイアログが最背面になってしまうのですが、この原因として考えられることはありませんでしょうか?
ちなみに、他ダイアログを別スレッドではなく、メインダイアログ内にてモーダル表示をし、EndDialog(IDOK)で閉じた際には、メインダイアログが最背面になることはありませんでした。

参考となるご意見がありましたら、よろしくお願い致します。

開発環境は
Visual Studio 2005です。

A 回答 (1件)

確認もテストもしてないので違ってたらすいません


スレッドで表示しているDialogのオーナが設定されずに
そのようになったような記憶があります
オーナーとしてメインダイアログのハンドルを渡せばよかったような

他の方法として(実装できるかどうかはアプリによるのでなんともいえない)
スレッドの方から直接Dialogを開くのではなく
メインダイアログにメッセージを飛ばして
メインダイアログではそのメッセージを受け取ったらDialog表示するとか
    • good
    • 0
この回答へのお礼

koi1234様、ご回答ありがとうございます。

なるほど、オーナー設定しなければこのような症状が発生するのですね。
確かに、koi1234様のおっしゃるようにわざわざスレッドをその都度作成して呼び出すよりはメインダイアログでPostMessageして、ダイアログを呼び出した方がよさそうですね。
実際、そのようにプログラムを変更したところ、メインダイアログが最背面になる症状は発生しませんでした。

参考となるご意見大変ありがとうございました!!

お礼日時:2010/03/04 12:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!