おはようございます。
初歩的な質問かもしれませんがお願いします。
Windows XP Win32 Dynamic-Link Library VC++6.0で作業しています。
メッセージボックスについてなのですが、
メッセージボックスのOKボタンが押されない限り(Exe側が終了しても)
そのメッセージボックスは終了されないようにしたいのですが、可能でしょうか??
(・メッセージボックスはDLL側で記述してあります。)
ご存知の方、ご教授願います
自己解決です。
ExE側のダイアログで、終了ボタンの操作を
EndDialog(0);
にすればDLL側のメッセージボックスが
Exe側のダイアログが閉じても残っていることが分かりました。
お騒がせしました。
状況がよくわかりませんが、
メッセージボックスってOK押されるまで、MessageBox関数が帰ってこないので他のことでき
ませんよね?別スレッドでメッセージボックスを出しているということでしょうか?
それと、EXE側ってウィンドウを持っていますか?
たとえば、クローズボックスとかで終了させられたりしても、ShowWindow(SW_HIDE)で、ウィ
ンドウを隠して、別スレッド(かどうかわかりませんが)が終了するまで、実際には終了させな
いというのはどうでしょうか
あらw 書いている間に解決でしたね。おめでとうございます。
質問を
1.実行ファイルがあって、それがあるDLLを呼び出している。
2.そのDLLの中にはメッセージボックスを表示するロジックが入っている。
3.メッセージボックスを表示している間に実行ファイルが終了しても
メッセージボックスは残したい。
と解釈しました。
基本的にDLLって、
呼び出し元の親であるExeと同一プロセス内にロードされるので
バンヴィさんがExe側と呼んでいるプロセスが死んだら
当然終了してしまいます。
※ですので、仮に同一Exeの中にメッセージボックスが実装されてても同じことかな。
よくあるパターンでは、3の時点で実行ファイル側を終了する処理のときに
本当に終了するのではなく、非表示にしておく方法でしょうかね。
※当然、メッセージボックスを閉じたあとには、後始末として
非表示にしたウィンドウの終了処理を行わなければなりませんが。
あらら、解決しちゃいましたか。
> EndDialog(0);
なのでMFCっぽいですが。
私の回答はららさんと似たような内容となりましたね。
※この質問の仕方では、こういう回答しか出来ないと思います。