[英]How do I make my application use the Windows theme?
我正在使用一些Windows API来创建一个小应用程序。 我已经创建了按钮,窗户,好吧。
但问题是我创建的组件看起来不像操作系统主题。 它们看起来很简单:
请参阅按钮作为示例。
如何启用Windows主题? 它可以是C或Delphi。
对于使用Windows控件的应用程序,请参阅此msdn文章
编辑:简而言之,Windows需要知道应用程序是否打算使用新的样式控件。 一些较旧的应用程序与XP及更高版本的新皮肤外观不兼容。 因此,每个exe应声明它与清单中的兼容版本,可执行文件中的嵌入式xml文件。 清单用于其他事情,例如声明你是什么或不兼容(DLL版本,120 dpi)以及免注册com。
如果您使用的是Delphi 2007或更高版本,则需要检查项目>选项>应用程序>使用Windows主题。
(应自动检查新应用程序)。
如果您的可执行文件名是YourAppName.exe,则在可执行应用程序所在的同一目录中创建名为YourAppName.exe.manifest的清单文件。
YourAppName.exe.manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="YourAppName" processorArchitecture="*" version="1.0.0.0" type="win32"/> <description>MyApp</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>
要将清单文件嵌入可执行文件,请使用mt.exe命令行语法:
mt.exe –manifest YourAppName.exe.manifest -outputresource:YourAppName.exe;1
在Visual Styles参考: MSDN的功能中,我发现了一个有趣的函数,即SetWindowTheme() 。 它可用于向/从控件/窗口应用或删除视觉样式,需要执行几个步骤才能在应用程序中启用Visual Style。
要使用Windows Theme API,您需要JEDI API库的JwaUxTheme
单元。
但是,将主题从Windows主题文件( .theme
)应用到应用程序似乎必须通过从控件关闭视觉样式并根据来自.theme
文件的信息编写所有者绘制的控件来完成。 MSDN有关于.theme
文件规范的文档(请参阅下面的第一个参考资料)。
一些很好的参考:
Windows Presentation Foundation(WPF)主题不好吗? 有一个代码示例如何加载它在这里 。
如果您使用VCL, 主题引擎和皮肤引擎完全支持Windows XP的主题。
如果美容应用程序是您的首选(不支持Windows主题),我认为, BusinessSkinForm和DynamicSkinForm是最佳选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.