如何让我的应用程序使用 Windows 主题?
我正在使用一些 Windows API 来创建一个小应用程序。 我已经创建了按钮、窗口,好吧。
但问题是我创建的组件看起来不像操作系统主题。它们看起来非常简单:
请参阅按钮作为示例。
如何启用 Windows 主题?它可以是 C 语言或 Delphi 语言。
I'm working with some windows API to create a little application.
I already created the buttons, windows, alright.
But the problem is the components I created don't look like the OS theme. They look very simple:
See the button as example.
How do I enable the Windows theme? It can be in C or Delphi.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对于使用 Windows 控件的应用程序,记录在 此 msdn 中编辑
:长话短说,Windows 需要知道应用程序是否打算使用新样式控件。一些较旧的应用程序与 XP 及更高版本的新皮肤外观不兼容。因此,每个 exe 都应该在清单(可执行文件中的嵌入 xml 文件)中声明它与哪个版本兼容。该清单用于其他用途,例如声明您兼容或不兼容的内容(DLL 版本,120 dpi)以及免注册 com.
For an application using windows controls, that is documented in this msdn article
Edit: To make a long story short, Windows needs to know for an application if it was intended to use the new style controls. Some older apps just aren't compatible with the new skinned looks of XP and later. Each exe should therefore declare with which version it is compatible in a manifest, an embedded xml file in the executable. The manifest is used for other things like declaring what you are or aren't compatible with (DLL versions, 120 dpi) as well as registration-free com.
你正在使用。 IIRC 预 Delphi 6 你
需要添加所需的清单
手。 D7及更高版本有一个组件
需要将其放在表格上
添加主题支持(它只是添加清单),直到 D2007 IIRC
在项目中添加了一个简单的检查
选项。
you're using. IIRC pre-Delphi 6 you
need to add the needed manifest by
hand. D7 and later has a component
that need to be dropped on a form to
add theme support (it simply adds the manifest), until D2007 IIRC
added a simple check in the project
options.
如果您使用的是 Delphi 2007 或更高版本,Project >选项>应用>>需要检查使用 Windows 主题。
(对于新应用程序应该自动检查)。
If you're using Delphi 2007 or later, Project > Options > Application > Use Windows Themes needs to be checked.
(This should be automatically checked for new applications).
在视觉样式参考:函数中MSDN上,我发现了一个有趣的函数,那就是 SetWindowTheme()。它可用于向控件/窗口应用视觉样式或从中删除视觉样式,有 需要执行几个步骤才能在应用程序中启用视觉样式。
要使用 Windows 主题 api,您需要 JEDI API 库的
JwaUxTheme
单元。但是,将 Windows 主题文件 (
.theme
) 中的主题应用到应用程序似乎必须通过关闭控件的视觉样式并根据.theme
中的信息编写所有者绘制的控件来完成。代码> 文件。 MSDN 有一个关于.theme
文件规范的文档(请参阅下面的第一个参考)。一些很好的参考:
Windows Presentation Foundation (WPF) 主题不好吗? 此处有一个如何加载它的代码示例。
如果您使用 VCL、主题引擎 和 Skin Engine 完全支持 Windows XP 主题。
如果美容应用程序是您的首要任务(不支持 Windows 主题),我认为,BusinessSkinForm 和 DynamicSkinForm 是最好的选择。
In Visual Styles Reference: Functions of MSDN, I found an interesting functions, that is, SetWindowTheme(). It can be used to either to apply or remove visual style to/from a control/window, there are several steps need to be done to enable Visual Style in an application.
To use Windows Theme api, you'll need
JwaUxTheme
unit of JEDI API Library.However, applying theme from Windows Theme files (
.theme
) to an application seems has to be done by turning off visual style from controls and write owner drawn controls based on information from.theme
files. MSDN has a documentation about.theme
file specification (see the first reference below).Some good references:
Is Windows Presentation Foundation (WPF) Themes bad? There is a code example how to load it here.
If you use VCL, Theme Engine and Skin Engine has a complete support of themes for Windows XP.
If beauty application is your priority (without supports for Windows themes), I think, BusinessSkinForm and DynamicSkinForm is the best choice.
如果您的可执行文件名称是 YourAppName.exe,则在可执行应用程序所在的同一目录中创建一个名为 YourAppName.exe.manifest 的清单文件。
YourAppName.exe.manifest:
要将清单文件嵌入到可执行文件中,请使用 mt.exe
命令行语法:
If your executable name is YourAppName.exe then, create a manifest file named YourAppName.exe.manifest in the same directory where the executable application is.
YourAppName.exe.manifest:
For embedding manifest file into executable use mt.exe
commandline syntax: