Windows XP で見栄えのする C++ で記述された MDI アプリケーションがあります。MDI 子ウィンドウはすべて、最終的に親ウィンドウのように見えます。良い。ただし、Windows 7 (およびおそらく Vista) では、親ウィンドウにはエアロ グラスがあり、子ウィンドウは、この忌まわしく変更不可能な水色 (Windows 7 の基本テーマと同じ) です。したがって、私のアプリケーションは本当に非常に悪いように見えます。
Office 2003 を起動し、MDI 子ウィンドウ (おそらく Excel) を見てみると、これと同じ醜い動作が見られます。ただし、Office 2007 には、実際には、青、銀、および黒の 3 つのカラー テーマがあります。これらのテーマは、何らかの形で Excel の MDI 子ウィンドウに引き継がれます。
Microsoft が Office 2007 でこれをどのように行っているかはわかりません。トリックを知りたいです。MDI 子ウィンドウの描画をフックして引き継いで、Office 2007 チームが実現したものを複製する必要があります。問題は、すべての DrawTheme* 呼び出しを使用して、グラデーションと丸みを帯びたエッジとボタンをすべて適切に描画することです。そして、これらすべてのシステム コールには、テーマへのハンドルが必要です。ただし、たとえば SetWindowTheme を使用して、別のテーマの配色を使用するように変更することはできないようです。少なくとも私が知る限り。
マイクロソフトがこれをどのように達成したか知っている人はいますか?