2012-01-30 22 views
0

おはよう! 進捗状況のMFCダイアログがあります。 PostMessageW(WM_CLOSE)を使用して100%に達した後、ダイアログが自動的に閉じます。 問題は、進行中に画面上でダイアログを移動しているときにダイアログが閉じず、WM_CLOSEメッセージが無視されることです。助言がありますか?ありがとう。MFCのダイアログが閉じる問題

+0

これはモデルのダイアログですか? – ChrisBD

+0

はい、これはモーダルダイアログです。 – rapt0r

+0

あなたはマウスを使って長い時間マウスを使ってダイアログを移動し続け、進行状況が終了すると、マウスを離すまでダイアログが閉じないことを意味しますか? –

答えて

0

モーダルダイアログでは、実際にはWM_CLOSEメッセージを使用する必要はありません。

通常はOKまたはCancelボタンイベントを使用して閉じるか、EndDialogメソッドを機能コードから呼び出すか、処理が完了したときに戻ります(ダイアログが初期化されるとすぐにプロセスが実行されることを前提とします)。戻り値を同時に設定することができます。 EndDialog(2);

どちらの方法でも、現在のメッセージハンドラが返されるとダイアログが閉じられるため、終了時に遅延が発生する可能性がありますが、それほど多くありません。

+0

トラップを実行した後、WM_KICKIDLEハンドラからEndDialogを呼び出すことはできません。私は常にモーダルダイアログを閉じるためにWM_CLOSEを使用します。 – Lothar

0

プログレスバーの後ろのアクティビティは別のスレッドで行われていますか?そうでない場合は、ダイアログをドラッグしてダイアログを解除してから再開するまで、進行状況バーがフリーズしてしまいます。つまり、スレッド間通信と、メッセージがダイアログHWNDにどのようにポストされているかを調べなければならない場合があります。

通常のウィンドウのように見えるダイアログをドラッグしている間は、ダイアログがフリーズ(アクティビティなし)状態になっている可能性があります。その場合、信号/ CEventを使用してダイアログを閉じるよう指示することができます。

関連する問題