最近、Win32 でモードレス ダイアログを使用したい状況に遭遇しました。
Win32: ツールバー ダイアログがフォーカスされず、メイン ウィンドウの処理が遅くなる!?
そして、これが私のメッセージループであることがわかりました:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
// Doing required stuff here...
while (GetMessage(&Msg, hWnd, 0, 0) > 0) {
// Processing messages here...
}
}
実際、このメッセージ ループは、モーダル ダイアログが独自のメッセージ ループを処理するため、モーダル ダイアログで完全に正常に動作するため、モードレス ダイアログがない限り正常に動作します。hWnd
のインスタンスを置き換えたとき、モードレス ダイアログは問題なく動作しましたNULL
。違いはわかりませんが、特定のウィンドウではなくメッセージが表示されるようです。
このメッセージ ループが正しく動作しない原因を誰か説明できますか?
これとして:
while (GetMessage(&Msg, NULL, 0, 0) > 0) {
// Processing messages here...
}
完璧に動作します!