如何为Win32应用程序设置外观

时间:2012-02-09 18:50:44

标签: c++ winapi skin

Win32看起来很讨厌,如何通过自定义皮肤让它看起来更好?

我指的是像 Adob​​e产品,iTunes,Autodesk 3dsmax和Softimage XSI,Windows媒体播放器,Blender,Comodo防火墙,Winamp,Babylon客户端以及少数下载管理器等。;

有许多类似的应用程序,但我找不到任何适当的教程或指南,它看起来像秘方!

只有 - 两个在线提供的教程:

  

陈旧无用:http://www.codeproject.com/Articles/20497/Draw-Skin-Window-Using-Pure-Win32-API

     

仅涵盖不透明的背景(这是我避免的,我需要更多关于GUI组件):   http://www.flipcode.com/archives/Win32_Window_Skinning.shtml

是否有任何书籍或正确的指南来了解如何为Win32api构建外观?

编辑:我接受DavidRodríguez的评论,那里↓↓

3 个答案:

答案 0 :(得分:3)

我在使用C ++ Builder之前已经这样做了。我采用的方法是创建一个表单,将其设置为无边框,并将整个表单的颜色设置为相同的颜色。然后我将表单透明度设置为此颜色。然后我将图像添加到创建所需皮肤的表单中。

我确信这一切都可以通过标准的win API完成,但我无法通过API调用来描述(或建议)。

答案 1 :(得分:2)

操作系统会自动为您处理“换肤”。

在“经典”模式(或Windows 2000及更早版本)中,这将为您提供一个非常经典的界面。窗口就像它们自Windows 95以来一样被绘制。据推测,当你说“Win32看起来很讨厌”时,这就是你所指的。但是,您需要意识到许多人喜欢这种外观并且特别选择在他们的机器上启用它。 [警告:个人意见即将来临!] 我是其中一个人,并从开发人员发布的截图中判断机器,我绝对不是唯一一个。

Windows XP实际上引入了“skinning”或主题引擎,它们存在于一组Windows DLL中。通过explicitly linking to version 6 of ComCtl32.dll,您的应用程序将自动获得这些视觉效果。有人说这个版本的Windows看起来"Fisher-Price",而其他人对“华而不实”一词非常满意。如果需要,保留选项以允许用户切换到“经典”主题(如上所述)。

Windows Vista完全彻底改变了Windows的主题引擎,并引入了一个名为“Aero”的新UI。这提供了华丽的窗口和控件,并具有透明效果 - 只要您的图形卡支持它。同样,通过显式链接到ComCtl32.dll的第6版,您的应用程序将自动应用所有这些样式。

值得注意的是,通过所有这些,Microsoft为用户提供了自定义用户界面中使用的颜色(以及字体和其他内容)的功能。例如,Aero默认为蓝色。如果你不喜欢蓝色,你可以改变它。我定期更改我的UI颜色以获得乐趣并重新激活自己。如果您无法阅读或不喜欢该字体,您也可以更改它。

因此,如果您选择与应用程序执行不同的操作,定义自己的自定义调色板并忽略用户通过提供的自定义界面选择的选项,您的应用程序将会看起来破碎并在用户的桌面上像拇指一样伸出来。在设计UI时,您要做的 last 事物应该是或看起来不同。

简而言之,将计算机升级到Windows Vista或更高版本,如果需要华而不实,请启用Aero界面。不要覆盖用户或尝试自定义绘制所有控件。你最终会得到一个难以使用的应用程序,没有按预期工作,后面的维护是一种痛苦,而且通常看起来比你只是单独留下它更糟糕。

答案 2 :(得分:2)

如果您不害怕学习如何使用低级SDK编程, 然后试试这个链接: Take control of your window code

也可以在Google上搜索WinLIFT。