ダイアログの消滅タイミング – プログラミング – Home

ダイアログの消滅タイミング
 
通知
すべてクリア

[解決済] ダイアログの消滅タイミング


ダイアナ
 ダイアナ
(@ダイアナ)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

こんばんは。
VC6++,MFC,Windows2000で作業しています。

あるボタンを押すと、モードレスダイアログが表示され、SetTimerします。
OnTimerで「タイムアウトしました。」のダイアログボックスを表示します。
この後、モードレスダイアログを自動的に破棄したいのですが、
どこで破棄したらいいのでしょうか?
いい考えが浮かびません。
どなたかご教授ください。


引用未解決
トピックタグ
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

「タイムアウトしました」と表示する前にKillTimerし、別のタイマーを用意する。適当
な時間経った後に呼ばれるタイマー関数にモードレスダイアログを破棄させる。

...というのはどうでしょう?


返信引用
ダイアナ
 ダイアナ
(@ダイアナ)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

OnTimerで拾うのではなくて、タイマー関数をつくるということですね。
なるほど。
タイマー関数は、関数内でDestroyWindowしても平気なのでしょうか?
やってみますね。


返信引用
MASATO
 MASATO
(@MASATO)
ゲスト
結合: 23年前
投稿: 53
 

> OnTimerで「タイムアウトしました。」のダイアログボックスを表示します。
> この後、モードレスダイアログを自動的に破棄したいのですが、
「この後」というのは、いつでしょうか?
ダイアログボックス表示直後ですか?
それともダイアログボックスにOKボタンがついていて、それを押した後ですか?

後者でしたら、OnTimer中で、メッセージボックスを表示し、OKボタンが押された後
DestoryWindowすれば良いのではないかと思います。


返信引用
ダイアナ
 ダイアナ
(@ダイアナ)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

OnTimerの中でDestroyWindowすると、アクセスバイオレーションが発生します。
OnTimerを抜けてからじゃないとダメみたいなのですが。。。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

「タイムアウトしました」のダイアログもモードレスであれば、
DestroyWindowではなく、EndDialogを呼びます。


返信引用
ダイアナ
 ダイアナ
(@ダイアナ)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

「タイムアウトしました」はMessageBoxです。
MessageBoxではまずいでしょうか?


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

結局ですね、この質問には

a. TimeOutが発生する。
b. タイムアウトしましたというメッセージボックスが表示される。
c. ユーザーがメッセージボックスを消す。

という一連の流れは読みとれるのに、「aの前」「aとbの間」「bとcの間」「cの後」のど
のタイミングでモードレスダイアログを破棄させたいのかが読みとれないことと、

メッセージボックスがモーダルダイアログなのか、モードレスダイアログなのかが明記さ
れていないために、対処法を的確に示しづらいという問題があるのです。

先の書き込みでメッセージボックスはモーダルらしいということが解りました。当初私は、

>...ダイアログボックスを表示します。
>この後、モードレスダイアログを...
という文面から「bとcの間」と解釈してあのようなレスをしました。

まずはあなたが「何をしたいのか」を明確にすることだと思います。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

今試してみましたが、

・TimeOutのメッセージボックスはモーダル
・「bとcの間」でモードレスダイアログをDestroyWindow()する

で、モードレスダイアログを無事破棄できましたよ?


返信引用
ダイアナ
 ダイアナ
(@ダイアナ)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

・TimeOutのメッセージボックスはモーダル
・「bとcの間」でモードレスダイアログをDestroyWindow()する
の方法でうまくいきました。
cの部分でDestroyWindow()すると、エラーになります。
しかし、bでもcでも同じですので、tibさんの方法をとろうと思います。

ご対応ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました