C ++ / WIN32一个专业的应用程序 - 它真的可能吗?

时间:2011-07-16 13:18:14

标签: c++ windows visual-studio-2010 skinning theming

我一直在寻找一个关于如何发布具有当今“顶级”外观的应用程序的良好解决方案/提示。

众所周知,在使用Windows进行编码时,我们通常会获得Windows风格的颜色/按钮/列表等。它们看起来很丑陋。

当我们决定要销售应用程序时,人们希望它看起来很好 - 显然是因为他们付了钱。

所以问题是:

  • 今天如何实现良好的应用程序?
  • 所有者绘图? (真的??)
  • 自定义控件?
  • 一些优秀的非免费库,它们可以执行“脏”工作并“涂抹”您的应用程序吗?

我不相信程序员会做那些“透支”的提示和技巧,完成一个控件需要很长时间。此外,我宁愿花时间编写内部应用程序的东西而不是使用per-control绘制..

我不知道,但是有一个截止日期,现在经过google上所有那些'ownerdrawed'控件之后 - 我发现这不是问题......当程序员需要时,必须有其他方便的东西使他的应用程序看起来高端!。

请帮忙,任何工具?有小费吗 ?任何事情......?

很少有例子,他们如何实现这一目标:

http://fooh.pl/pokaz/3198197337370da4cdfdebf0ae13933c_openfm.jpg

9 个答案:

答案 0 :(得分:2)

例如,您可以查看Qt。除了基本功能之外,您还可以根据自己的喜好style {{3}}所有小部件(以非常类似于CSS的方式),并根据您的内容创建“主题”。

对于链接到的图像中窗口的非矩形外观,您可以使用Qt的setMask()功能。

答案 1 :(得分:2)

听起来你想要一个完全可换肤的应用程序,但没有比典型的Win32控件更多的努力。 这个是不可能的。但一般来说,剥皮并不困难,只比你愿意花费的时间更长。

你的下一个问题是:一旦你有一个皮肤应用程序,你需要一个专业的平面设计师来开发一个良好的皮肤。太多的小项目开发人员认为他们可以制作自己的皮肤,但它几乎总是看起来很糟糕。如果没有设计专家,这种性感的专业外观是不可能的。

最后,无论您最终使用哪种花哨的自定义皮肤,功能都可能需要自定义。也就是说,如果你想要非矩形控件或动画,这些都是你必须花时间去开发的东西。

使用像Qt这样的工具包可能是一项不错的投资。但无论你如何分割它,这都是需要花费很多精力的细节。

除此之外:由UI专家正确设计,默认的Windows控件看起来非常专业。使用本机Windows控件有很多好处,在尝试重新发明轮子之前,你应该仔细考虑一下:

  1. 键盘导航,屏幕阅读器,高对比度等辅助功能。您真的要尝试重新发明Windows提供的所有可访问性功能吗?或者是否值得将残疾人排除在使用您的应用程序以便您可以使用皮肤(更不用说使用辅助功能的非残障人士)了?
  2. 调整。您的皮肤是否意味着禁用任何窗口大小调整?再次,这值得吗?
  3. 有些东西不能很好地剥皮。例如滚动条和菜单。一些开发人员重新发明它们(滚动条特别难以重新发明),其他开发人员只是让它们不受约束。
  4. Windows主题。 Windows主题不仅仅是开始菜单的颜色;它应该决定整个操作系统的外观。使用标准的Windows控件允许用户使用内置机制来选择外观。

答案 2 :(得分:1)

该应用程序中可能没有一个控件。

相反,整个事物被渲染为图像。有一个背景图像,以及一些覆盖图像(大多数是透明的),以提供鼠标悬停突出显示,禁用控件等。唯一没有预渲染的是当前曲目和播放列表信息,这是具有特定字体的纯文本。

可以使用另一张图片执行命中测试。

程序员几乎没有工作来实现花哨的设计,这一切都是由艺术家完成的(和编辑器中的Photoshop支持图层等程序一样,可以很容易地构建所有的叠加层。)

当然,缺点是按钮的行为与普通的Win32按钮完全不同。它们不支持键盘焦点(虽然可能有热键),只需在mouseup上激活即可。可访问性是可怕的,屏幕阅读器没有信息,应用程序不尊重系统字体大小设置。为了使视力不佳的人可以读取UI,需要完全不同的皮肤。

答案 3 :(得分:1)

C ++团队整理了一个名为Hilo的示例(就像夏威夷的地方一样),它不使用任何框架(没有ATL,没有MFC),而且都是本机代码。它使用了许多Windows 7功能和一些令人愉快的图形和动画。所有代码和设计都可用并记录在案。看一看。

答案 4 :(得分:1)

如果您想挖掘任何特定应用程序的封面,您可以启动Spy实用程序并查看界面被分解为多少控件:

I want Spy++ but I don't have Visual Studio

Is there a Spy++ like utility for WPF?

例如......以皮肤模式窥探Windows Media Player会发现有一个名为WMP Skin Host的窗口类,您可以看到它有子窗口。 (常规的非皮肤模式被分解为一些列表框和按钮等。)

根据我的经验,当人们重新实施太多试图“看起来很酷”时,“现代”皮肤通常是一场灾难。它阻碍了自动化(通过诸如AutoIt之类的事情),更不用说残疾人的accessibility features了。此外,如果您没有使用基于操作系统的主题API,那么今天看起来很酷的内容将不会保持最新状态。

(注意:因为我一般都是Qt的粉丝,我建议调查QStyle and QStylePainter。但这更像是“主题”而不是“剥皮”。) < / p>

我会非常谨慎地在应用程序中使用皮肤,除非我发现我正在开发一个绝对需要它的市场(如音乐播放器)。

答案 5 :(得分:0)

通常,您可以使用GDI(+)渲染渲染自定义控件。

答案 6 :(得分:0)

如果你不介意进入C ++ / CLI,有WPF,它提供了对用户定义的样式和模板的非常广泛的控制。

答案 7 :(得分:0)

你可能想要好好看看SkinCrafter。它成熟,稳定,非常灵活。我不再使用它,但我对它的体验非常愉快。

答案 8 :(得分:0)

您可以使用外部布局引擎,例如来自terra informatica的HTMLayout,这个也使用了一些专业软件。