1

私のアプリ (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 を取得します。奇数。

4

0 に答える 0