アプリケーション(プログレスバー)が固まらないようにするためには?


OPE  2010-04-08 16:25:56  No: 71539  IP: [192.*.*.*]

開発環境:VS2005 C++

UI上にあるボタンを押すと時間がかかり、画面が固まってるように見えるため、
ボタンを押されたらプログレスバーを表示するようにしました。
また、時間がかかる処理はライブラリ側に実装されています。

そこで、プログレスバーを進めるための関数をUI側に作成し、
その関数ポインタをUI側からライブラリ側に渡して、
ライブラリ側の時間がかかる処理内で進捗度合いを判断し、
適宜コールバック関数を呼ぶようにしています。

プログレスバーの進捗具合は期待通りに動くのですが、
プログレスバー表示中に他のアプリケーションをEnableにすると、
アプリケーションが固まって見えたり、
時々プログレスバーの進捗がとまったりします。

どなたか良い手段をご教授いただけないでしょうか?

編集 削除
aetos  2010-04-09 02:13:54  No: 71540  IP: [192.*.*.*]

時間がかかる処理は別スレッドで走らせるのが基本です。

編集 削除
OPE  2010-04-09 09:34:46  No: 71541  IP: [192.*.*.*]

aetosさま

ありがとうございます。  同一スレッドで何とかしたいのですが、
不可能でしょうか?  私が調査した限り、メッセージポンプを使えば良い??
のかと想像するのですが、よく分かりません。

編集 削除
maru  2010-04-09 11:00:34  No: 71542  IP: [192.*.*.*]

> 私が調査した限り、メッセージポンプを使えば良い??
多分これは、ローカルにメッセージループを作成することだと思いますが、
その場合、時間がかかる処理側に実装する必要があります。
時間がかかる処理はライブラリとのことで、それは出来ないはずです。

編集 削除