こんにちは、
XP Pro SP2 VC++ .net 2003 SDKでプログラミングしています。
現在、画像処理のプログラムを作っていまして、
まずは、フォルダを指定するとそのフォルダ内の
ビットマップファイルを読み込んで、
子ウィンドウに表示していくという段階です。
さて、この処理ですが、親ウィンドウのウィンドウプロシージャから
SendMessage関数で自前のメッセージを子ウィンドウに送って処理しています。
このとき、whileループを使って、フォルダ内のファイル名を取得して
子ウィンドウにメッセージを送っているのですが、
処理したいフォルダ中に、ビットマップファイルが10000以上入っています。
そのため、このwhileループに時間がかかり、応答なし扱いになっているようです。
調べた所、必ず5秒で応答なしとされてしまいます。
一応、デバッグしている状態では最後まで動いてます。
このような場合で、うまく処理する方法はありますでしょうか?
調べた所、PeekMessage関数を使って、メッセージループの所を書き換えて
アイドル処理する方法があるのですが、これ以外にうまい方法は無いのでしょうか?
スレッドを作ってそちらで処理をする。
ただし、2重に操作要求が重なったり、、処理終了が前提の処理が実行されな
いように工夫する必要がある。
CreateThread
_beginthread
で調べてみてください。
「whileループ」で一度に処理しないで、ファイル情報を取得してから、あとは
「タイマ-ルーチン」でポ-リングしなが一つ一つ処理する方法もあると思います。
時間が掛かるので急ぐ場合は無理ですが......
>麩様
やはり、マルチスレッドが一番の解決策みたいですね。
とりあえず、マルチスレッドでやってみようと思います。
>ITO様
タイマーで処理していくのは考えたのですが、
なにぶんにも、ファイル数が大変多いもので…
お二人とも、アドバイスありがとうございました。