如何检查启用了哪个XP主题

问题描述:

我有一个完美的窗口XP主题,但切换到'经典主题'富文本框控制出现没有边界的wxPython。我可以为经典主题启用边框,但为此如何检查启用了哪个XP主题

Q1。我需要知道经典主题是否已启用。

Q2.我也不确定有多少不同的主题可能会破坏我的应用外观。所以最好的方法是什么?

Q3。我可以为给定的应用程序强制执行主题吗?例如从python我可以加载任何Windows DLL和调用函数,但有没有这样的方式?

编辑:在我的情况ctypes.windll.UxTheme.IsThemeActive()工作

经典主题化更多的是一种非主题。 通过在UxTheme.dll中调用IsAppThemed()检查经典主题

因此应该没有理由担心不同的主题。

最后,应用程序获得的唯一选择是是否尝试并支持主题 - 通过包含指定使用新的通用控件的清单。不包括清单的应用程序永远不会是主题。根据用户偏好设置的应用将以主题为主题。

+0

但我可以强制一个主题? – 2009-10-28 15:48:57

+0

在什么情况下? 你想在一个应用程序强制一个主题,这是不受欢迎的? 当用户禁用主题时,您想强制应用程序中的主题? 当系统配置为使用主题A时,您想要在应用上强制主题B? 在第一种情况下,您需要为应用程序创建清单。在接下来的两种情况下,它是不可能的(有记录的API)。 – 2009-10-28 18:47:58

+0

isApp主题返回0总是在我的情况下,但IsThemeActive()似乎工作 – 2009-10-29 08:02:30