我有一个用 C++ 编写的 MDI 应用程序,在 Windows XP 下看起来很棒。所有 MDI 子窗口最终看起来都像它们的父窗口。好的。但是,在 Windows 7(可能还有 Vista)下,父窗口具有航空玻璃,而子窗口是这种可怕的不可更改的淡蓝色(与 Windows 7 Basic 主题相同)。所以我的应用程序看起来真的非常非常糟糕。
通过启动 Office 2003 并尝试查看 MDI 子窗口(可能在 Excel 中),您可以看到同样的丑陋行为。但是,Office 2007 实际上具有三种颜色主题——蓝色、银色和黑色。这些主题以某种方式传递到 Excel 中的 MDI 子窗口。
我不知道 Microsoft 在 Office 2007 中是如何做到这一点的。我很想知道其中的诀窍。我需要挂钩并接管我的 MDI 子窗口的绘图,并复制 Office 2007 团队已经完成的工作。问题是我想使用所有的 DrawTheme* 调用,所以我得到了正确绘制的渐变和圆角边缘和按钮。所有这些系统调用都需要一个主题句柄。但似乎不可能,例如,使用 SetWindowTheme 更改为使用来自另一个主题的配色方案。至少据我所知。
有人知道微软是如何做到这一点的吗?