为什么 OpenThemeData(pParent, L"TEXTSTYLE") 在 XP 上失败?
我正在使用主题库绘制一些文本,这些文本在 Windows Vista 上工作得非常好 - 但是,在 Windows XP 上返回的 HTHEME 为 NULL。 这是我正在使用的代码:
HTHEME hTheme = ::OpenThemeData(pParent, L"TEXTSTYLE");
hTheme 在 Vista 上有效,但在 Windows XP 上为 NULL。
我已阅读 OpenThemeData 和 部件和状态,但没有提及 XP 不支持 TEXTSTYLE(甚至谷歌没有提出任何好的建议)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
主题 Luna(即 Microsoft 制作的随 XP 一起发布的主题)仅定义了 Aero 类的子集和部分(Windows Vista 和 7)。
如果您可以访问运行 Windows XP 和 Vista(或 7)的计算机,您可以预览主题资源管理器实用程序定义的内容:
http://sourceforge.net/projects/mctrl/files/theme-explorer/
The theme Luna (i.e. the Microsoft-made theme distributed with XP) defines only subset of classes and parts of Aero (Windows Vista and 7).
If you have access to machines with Windows XP and Vista (or 7) you may preview what's defined by Theme Explorer utility:
http://sourceforge.net/projects/mctrl/files/theme-explorer/
我猜你在 XP 上还打开了主题吗? 如果您关闭了“bubblegum”模式 - 即恢复到经典外观,则主题 API 都会失败,并且您需要使用旧版 API 来绘制框架元素。 DrawFrameControl 等。
I presume that on XP you still have theming turned on? If you have turned off "bubblegum" mode - i.e. reverted to the classic look, then the Theming APIs all fail and youre expected to use the legacy APIs to draw the frame elements. DrawFrameControl etc.