MessageBoxについて

[戻る]
バンヴィ 2007/06/14(木) 10:39:15
おはようございます。
初歩的な質問かもしれませんがお願いします。

Windows XP Win32 Dynamic-Link Library VC++6.0で作業しています。

メッセージボックスについてなのですが、
メッセージボックスのOKボタンが押されない限り(Exe側が終了しても)
そのメッセージボックスは終了されないようにしたいのですが、可能でしょうか??
(・メッセージボックスはDLL側で記述してあります。)

ご存知の方、ご教授願います

バンヴィ 2007/06/14(木) 12:15:59
[[解決]]
自己解決です。

ExE側のダイアログで、終了ボタンの操作を

EndDialog(0);        

にすればDLL側のメッセージボックスが
Exe側のダイアログが閉じても残っていることが分かりました。

お騒がせしました。

らら 2007/06/14(木) 12:23:47
状況がよくわかりませんが、
メッセージボックスってOK押されるまで、MessageBox関数が帰ってこないので他のことでき
ませんよね?別スレッドでメッセージボックスを出しているということでしょうか?
それと、EXE側ってウィンドウを持っていますか?
たとえば、クローズボックスとかで終了させられたりしても、ShowWindow(SW_HIDE)で、ウィ
ンドウを隠して、別スレッド(かどうかわかりませんが)が終了するまで、実際には終了させな
いというのはどうでしょうか

らら 2007/06/14(木) 12:27:11
あらw 書いている間に解決でしたね。おめでとうございます。

willy.K 2007/06/14(木) 12:32:14
質問を
1.実行ファイルがあって、それがあるDLLを呼び出している。
2.そのDLLの中にはメッセージボックスを表示するロジックが入っている。
3.メッセージボックスを表示している間に実行ファイルが終了しても
  メッセージボックスは残したい。
と解釈しました。

基本的にDLLって、
呼び出し元の親であるExeと同一プロセス内にロードされるので
バンヴィさんがExe側と呼んでいるプロセスが死んだら
当然終了してしまいます。

※ですので、仮に同一Exeの中にメッセージボックスが実装されてても同じことかな。

よくあるパターンでは、3の時点で実行ファイル側を終了する処理のときに
本当に終了するのではなく、非表示にしておく方法でしょうかね。

※当然、メッセージボックスを閉じたあとには、後始末として
 非表示にしたウィンドウの終了処理を行わなければなりませんが。

willy.K 2007/06/14(木) 12:45:01
あらら、解決しちゃいましたか。

> EndDialog(0);
なのでMFCっぽいですが。

私の回答はららさんと似たような内容となりましたね。
※この質問の仕方では、こういう回答しか出来ないと思います。

古いスレッドには追加発言できません。