8

私が実行しているすべての Windows 8 マシンで永続的に灰色の境界線で表示される大規模なレガシー アプリケーションがありますが、他のアプリの他のウィンドウはデスクトップの背景から派生した色を正確に使用します。私の人生のために、私は理由を見つけることができません。

これを制御する API の MSDN をクロールするために最善を尽くしましたが、空になりました。このアプリは、Windows XP、Vista、および 7 の他のすべてのアプリと同じように見えますが、Windows 8 だけが灰色になっています。これを別の方法で処理するために、Win8 固有のコードを追加していません。

外側は単なる MFC ウィンドウですが、内側には .NET/WPF コンポーネントと Direct3D 9 対応のビジュアル領域が埋め込まれています。

私の最善の推測では、ウィンドウに Direct3D サーフェスがあることに何らかの形で関連している可能性がありますが、それを検証することはどこにもできませんでした。

どんな助けでも大歓迎です!

ありがとう

編集: 灰色は、フォーカスがない場合の効果と一致します。ウィンドウ フォーカスを使用してゲームをプレイすることは間違いありません。

4

2 に答える 2

2

問題は、開発者がOnNcActivate()をオーバーロードし、最後にTRUEを返したことでした。代わりに、ベースクラス(CWnd)のOnNcActivateを呼び出す必要がありました。

これは、十分に近くで見れば、Windows7でも見られました。

于 2013-01-31T22:25:43.477 に答える
1

Windows 8 のデスクトップは、Windows 7 や Vista が Aero テーマで行ったように、ウィンドウの境界線に透明度を使用しません。アプリの別の上部ウィンドウにフォーカスを移動している場合、これが灰色の境界線が表示される理由を説明している可能性があります。フォーカスのないウィンドウの色を灰色から識別可能な色に変更して、それが表示されていることを確認してください。

于 2013-01-30T23:23:54.087 に答える