私のアプリ (C++ で作成) は Win32 (MFC ではない) を使用して、CreateWindowEx でいくつかのウィンドウを作成します。メイン ウィンドウはデスクトップを親として取得し、子ウィンドウはメイン ウィンドウを親として取得します。
私の問題:
- アプリにはアクティブな子ウィンドウがあります
- 別のアプリに切り替えます (クリックごと、ALT+TAB などは関係ありません)
- ALT+TAB でアプリに戻ります
これで、子ウィンドウではなく、アプリのメイン ウィンドウがアクティブになりました。タスクバー エントリをクリックして元に戻すと、子ウィンドウはアクティブなままになります。
これは Aero でのみ発生します (Glass の有無にかかわらず)。従来のウィンドウ スキームをアクティブにすると、すべてが Windows XP と同じように動作します (ALT + TAB で元に戻すと、子ウィンドウがアクティブのままになります)。
提案、リンク、その他のリソースはありますか?
(UI 要素が文字列などの独自のデータ型を持つクラスにラップされているため、サンプル コードを提供するのは少し難しいです。)
従来のスキームを使用する Vista は、WM_ACTIVATE をメイン ウィンドウに送信し、別の WM_ACTIVATE を 2 番目のウィンドウ (メイン ウィンドウが所有) に送信するようです。Vista Aero を有効にすると、メイン ウィンドウのみが WM_ACTIVATE を取得します。奇数。