Windows 7 在windows 7下更改MDI子窗口的颜色

Windows 7 在windows 7下更改MDI子窗口的颜色,windows-7,office-2007,mdi,themes,Windows 7,Office 2007,Mdi,Themes,通过启动Office2003并尝试查看MDI子窗口(可能在Excel中),您可以看到同样丑陋的行为。然而,Office 2007实际上有三个颜色主题——蓝色、银色和黑色。这些主题以某种方式传递到Excel中的MDI子窗口 我不知道微软在Office2007中是如何做到这一点的。我很想知道诀窍。我需要钩住并接管MDI子窗口的绘图,并复制Office2007团队完成的工作。问题是我想使用所有的DrawTheme*调用,这样我就可以正确地绘制渐变、圆角和按钮。所有这些系统调用都需要一个主题句柄。但是,

通过启动Office2003并尝试查看MDI子窗口(可能在Excel中),您可以看到同样丑陋的行为。然而,Office 2007实际上有三个颜色主题——蓝色、银色和黑色。这些主题以某种方式传递到Excel中的MDI子窗口

我不知道微软在Office2007中是如何做到这一点的。我很想知道诀窍。我需要钩住并接管MDI子窗口的绘图,并复制Office2007团队完成的工作。问题是我想使用所有的DrawTheme*调用,这样我就可以正确地绘制渐变、圆角和按钮。所有这些系统调用都需要一个主题句柄。但是,例如,似乎不可能使用SetWindowTheme更改为使用另一个主题的配色方案。至少据我所知


有人知道微软是如何做到这一点的吗?

这不是一个很好的解决方案,但在网络上,我发现了如何将WinXP的圆形外观放置到方形的平面Win95/Win98/Win2k窗口样式中。它的工作原理是使用WinXP主题的BMP快照,而不是使用bitblit函数在窗口边框周围将其拉伸到适当的大小。我试过他的演示软件,果然,它看起来像Win7下的WinXP Luna。我可以使用他的示例作为基础来钩住并替换我的MDI子窗口框架图形


这种方法的问题是,您要么选择标题栏宽度并坚持使用,要么不响应更改标题栏高度的全局主题调整,要么必须以不同的大小拍摄许多不同的BMP快照。出于我的目的,只需坚持一种厚度,而忽略用户主题的调整,可能就可以了。设置好后,我可以通过BMP快照应用不同的主题,因此我也可以应用Office 2007 MDI儿童外观。

这不是一个很好的解决方案,但在web上,我发现了如何将WinXP圆形外观放置到方形平台Win95/Win98/Win2k窗口样式中。它的工作原理是使用WinXP主题的BMP快照,而不是使用bitblit函数在窗口边框周围将其拉伸到适当的大小。我试过他的演示软件,果然,它看起来像Win7下的WinXP Luna。我可以使用他的示例作为基础来钩住并替换我的MDI子窗口框架图形


这种方法的问题是,您要么选择标题栏宽度并坚持使用,要么不响应更改标题栏高度的全局主题调整,要么必须以不同的大小拍摄许多不同的BMP快照。出于我的目的,只需坚持一种厚度,而忽略用户主题的调整,可能就可以了。一旦到位,我可以通过BMP快照应用不同的主题,因此我也可以应用Office 2007 MDI儿童外观。

我真的很讨厌这样做,因为它违反了GUI标准,但如果微软在Windows 7下提供了一些调整MDI子项颜色的功能,我甚至不用考虑这个问题。我真的很讨厌这样做,因为它违反了GUI标准,但如果微软在Windows7下提供了一些调整MDI子系统颜色的功能,我甚至不必考虑这个问题。