window procedure内で時間のかかる処理について – プログラミング – Home

通知
すべてクリア

[解決済] window procedure内で時間のかかる処理について


ぽてと
 ぽてと
(@ぽてと)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

こんにちは、
XP Pro SP2 VC++ .net 2003 SDKでプログラミングしています。

現在、画像処理のプログラムを作っていまして、
まずは、フォルダを指定するとそのフォルダ内の
ビットマップファイルを読み込んで、
子ウィンドウに表示していくという段階です。

さて、この処理ですが、親ウィンドウのウィンドウプロシージャから
SendMessage関数で自前のメッセージを子ウィンドウに送って処理しています。
このとき、whileループを使って、フォルダ内のファイル名を取得して
子ウィンドウにメッセージを送っているのですが、
処理したいフォルダ中に、ビットマップファイルが10000以上入っています。
そのため、このwhileループに時間がかかり、応答なし扱いになっているようです。
調べた所、必ず5秒で応答なしとされてしまいます。
一応、デバッグしている状態では最後まで動いてます。

このような場合で、うまく処理する方法はありますでしょうか?
調べた所、PeekMessage関数を使って、メッセージループの所を書き換えて
アイドル処理する方法があるのですが、これ以外にうまい方法は無いのでしょうか?


引用未解決
トピックタグ
麩
 麩
(@麩)
ゲスト
結合: 17年前
投稿: 95
 

スレッドを作ってそちらで処理をする。
ただし、2重に操作要求が重なったり、、処理終了が前提の処理が実行されな
いように工夫する必要がある。

CreateThread
_beginthread
で調べてみてください。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

「whileループ」で一度に処理しないで、ファイル情報を取得してから、あとは
「タイマ-ルーチン」でポ-リングしなが一つ一つ処理する方法もあると思います。
時間が掛かるので急ぐ場合は無理ですが......


返信引用
ぽてと
 ぽてと
(@ぽてと)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

>麩様
やはり、マルチスレッドが一番の解決策みたいですね。
とりあえず、マルチスレッドでやってみようと思います。

>ITO様
タイマーで処理していくのは考えたのですが、
なにぶんにも、ファイル数が大変多いもので…

お二人とも、アドバイスありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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