AfxMessageBoxが残ったまま後の処理が – プログラミング – Home

AfxMessageBoxが残ったまま...
 
通知
すべてクリア

AfxMessageBoxが残ったまま後の処理が


トシカズ
 トシカズ
(@トシカズ)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

第一段階としてソースまで載せてませんが、ご質問させて下さい。
Visual C++6.0SP4 Win2000SP4上で作ったあるプログラム中で
AfxMessageBox関数でOK,キャンセルを問い合わせ、OKなら
処理中、数字を画面のスタティックテキストに表示してモニターさせながら
日次更新などのバッチ処理させる部分を書いたのですが
時々そのメッセージボックスが消えないうちに後の処理が開始され
モニターの数字はボックスと重なる部分は前面に現れて見れるのですが
過ぎたメッセージボックス表示も残っいて見苦しかったりします。
バッチ処理が終了すればボックスも同時に消えて
プログラムが落ちたりはしないのですが、あのボックス表示が残ったまま
後の処理がされたりするのを防ぐ方法ありますでしょうか?
AfxMessageBox関数の使用に関係して仕方無かったりするのでしょうか?
何かお心当たりある方いらっしゃいましたら、ご助言下さいませ。
よろしくお願い致します。


引用解決済
トピックタグ
トシカズ
 トシカズ
(@トシカズ)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

追記・・・↑フォームビューアプリからの処理です。


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

バッチ処理の前にメインウィンドウを再描画
(RedrawWindow か UpdateWindow)するとどうなりますか?


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

例えば、言われているAfxMessageBox関数の呼び出し位置が処理の途中だったとすると
ダイアログ自体が消えた後の自ウインドウの再描画が走る前に後続の処理が走ってしまって
ウインドウの再描画が後回しにされる事があるためではないかと思います。
Windowsのプログラムを作っていて感じるのは画面の描画をOSに任せると後回しにされる
ケースが結構あるということです。
これは画面よりも内部の処理を優先させているためだと思います。
実際のところ、WM_TIMERにしても内部処理が続いている間は保留状態になりますし、
GUIを使ったプログラムの場合、コンソールプログラムにはない部分で気を使う必要が
あると思います。

dairygoodsさんが書かれているように明示的に再描画を指示してやればうまく行くのでは
ないかと私も思います。
但し、実際のソースが開示されていないのでプログラムの作りによってはそうは行かない
かもしれません。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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