サブウィンドウの制御がうまく出来ない
初めてのWIN32プログラムでまだウィンドウの制御がちゃんと理解できていない
ため、行き詰まってしまいました。よろしくお願いします。
・やりたい事
メインウィンドウの出力ボタンを押すと、サブウィンドウを表示しプログレス
バーで進捗を表示しつつ出力処理をしたいと考えています。
・状況と問題
プログレスバーのあるサブウィンドウを一切触らなければ、進捗処理が思った
通り表示されて、処理終了後にメインウィンドウに返ってきます。
ですが、サブウィンドウをマウスで移動しようとすると、サブウィンドウが白
っぽくなり(応答なし)、出力処理が終わるまでそのまま待ち状態になってし
まいます(処理が終わればサブウィンドウは破棄されメインウィンドウに戻っ
てきます)。
・質問
たぶん、出力処理が終わるまで、メッセージがキューに溜まってウィンドウが
待ち状態になってしまうのではないかと思っていますが、どうしたら良いかわ
からず、先に進めなくなってしまいました。関数などの処理中に、ウィンドウが
待ち状態にならない方法を教えてください。
サブウィンドウクラスの定義
**********************************************************************
wc.style =0;
wc.lpfnWndProc =SubWndProc;
wc.cbClsExtra =0;
wc.cbWndExtra =0;
wc.hInstance =hInst;
wc.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor =LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName =NULL;
wc.lpszClassName="SubWndClass";
**********************************************************************
メインウィンドウプロシジャー
**********************************************************************
~省略~
case WM_COMMAND:
~省略~
hSWnd=CreateWindow("SubWndClass", "処理中", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, ww, hh, hwnd, (HMENU)NULL, 0, 0
); //(1)へ
ShowWindow(hSWnd, SW_SHOW);
FuncA(); //(2)へ
DestroyWindow(hSWnd);
**********************************************************************
(1)サブウィンドウ(オーナー付ウィンドウ)のプロシジャー
**********************************************************************
~省略~
case WM_CREATE:
pb = CreateWindow(PROGRESS_CLASS, "",
WS_CHILD | WS_VISIBLE | WS_BORDER, x, y, 200, 20, hwnd, NULL, 0, NULL
);
SendMessage(pb, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
SendMessage(pb, PBM_SETSTEP, 1, 0);
**********************************************************************
(2)関数A
**********************************************************************
~省略~
for(i=0; i<ct1; i++, p++){
~省略~
if(i%gct == 0) //処理件数を100分割してプログレスバーを増分
SendMessage(pb, PBM_STEPIT, 0, 0);
~省略~
}
**********************************************************************