すべてのウィンドウハンドルを配列に集めるコードがあります。問題は、コールバックが非同期で行われるため、列挙が実際に終了したときはわかりません。これを解決する最良の方法は何ですか?私はこれがWindowsプログラミングの共通の問題だと考えています。複数の非同期コールバックの終了を検出します
BOOL CALLBACK enumWindowsProc3(HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
) {
//add hwnd to array
return TRUE;
}
int howManyWindows() {
EnumWindows (enumWindowsProc3, 0);
// need to wait here for EnumWindows() to finish...
return array size
}
それは問題です - 私はそれが完了するのを知っていません。私はちょうどウィンドウ数を取得する方法を認識していない! – Saideira
いつ完了するのか分かりませんが、サブタスクの完了時に非同期応答が得られますか?上記のいずれの方法を使っても、各サブタスクの完了を追跡し、完了したメインタスクに信号を送ることができます。もちろん、直接的なAPIソリューションもあるかもしれません。 – ricosrealm