IsAppThemed和IsThemeActive有什么区别?(涉及IT技术)

4

我无法真正理解在什么情况下应该使用IsAppThemed和何时应该使用IsThemeActive

在Windows 7上,似乎无论是Aero还是Windows 7基本版,这两个函数都会返回TRUE,并且在Windows Classic上这两个函数都会返回FALSE。

从我目前了解的文档中,IsAppThemed将始终从Windows 8开始返回TRUE。除此之外,我无法确定如何在任何情况下更喜欢其中一个......

1个回答

3

IsThemeActive()函数用于判断操作系统中是否启用了视觉样式。在Win8之前,您可以通过选择经典样式来关闭该功能。是的,这个名字比较差。

IsAppThemed()函数用于判断应用程序是否启用了视觉样式,包括使用清单文件或ActivateActCtx()方式启用,并且未被禁用。如果IsThemeActive()函数返回FALSE,则IsAppThemed()函数将始终返回FALSE。


好的,我现在理解了TRUE/TRUE和FALSE/FALSE两种情况...最后一种情况是当IsAppThemed() == TRUE且IsThemeActive() == FALSE时,应用程序通过某种方式禁用了视觉样式,即操作系统正在使用Aero或Win7基本版,但应用程序本身正在使用Windows经典样式控件。这正确吗?似乎IsThemeActive()通常是要使用的函数,尽管我几乎想不到IsAppThemed()的用例。 - Jake Petroules
不,更常见的情况是应用程序没有启用视觉样式。选择加入是明确的,而不是偶然的。不存在“经典样式控件”,它们都是相同的,只是呈现方式不同。 - Hans Passant
好的,我现在对区分有了更好的理解 - 谢谢! - Jake Petroules
我认为这个问题还没有得到解答。没有人引用过一个场景,其中IsThemeActive=1IsAppThemed=0。在Windows 7上运行Charles Petzold的Programming Windows 5th-ed第11章“About2”示例,并检查代码中的IsThemeActive和IsAppThemed。它们仍然都显示为1。我们知道Petzold 1998年的代码与comctl32 v6清单无关。请在此处查看图像:https://i.stack.imgur.com/G29KT.png - Jimm Chen
哎呀,属性名称是IsAppThemed,而不是IsWindowThemed。绕过应用程序的默认行为并不难,特别是在使用Petzold代码时。85个问题之后,你应该知道不要在评论中寻求帮助了。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接