c++ /WIN32一个看起来很专业的应用程序——这真的可能吗?
C++/WIN32 A professional looking application - is it really possible?
我一直在到处寻找一个好的解决方案/技巧,如何发布一个具有当今"高端"外观的应用程序。
我们都知道,当使用窗口编码时,我们通常会得到窗口风格的颜色/按钮/列表等。他们看起来和感觉都很丑。
当我们决定要销售一个应用程序时,人们希望它看起来很好——显然因为他们已经为它付钱了。
所以问题是:
- 今天好的应用程序外观是如何实现的?
- 所有者画什么?(真的吗??)
- 自定义控件?
- 一些好的非免费库,做"脏"的工作和"皮肤"你的应用程序?
我不相信程序员会做那些"透支"的技巧和技巧,完全完成一个控件需要很长时间。此外,我宁愿花时间编码内部应用程序的东西,而不是玩每个控件绘制。
我没有线索,但有一个截止日期,现在在经历了所有这些"ownerdraw"控制谷歌-我想到这不是事情…当程序员需要使他的应用程序看起来高端时,必须有其他方便的东西!
请帮忙,有工具吗?有什么建议吗?有. .
?几个例子,他们是如何实现这种外观的:
http://fooh.pl/pokaz/3198197337370da4cdfdebf0ae13933c_openfm.jpg
您可以看看Qt的例子。除了它的基本功能之外,您还可以根据自己的喜好(以一种与CSS非常相似的方式)为所有小部件设置样式,并根据自己的喜好创建"主题"。
对于您链接到的图像中的窗口的非矩形外观,您可以使用Qt的setMask()功能。
这听起来像你想要一个完全可皮肤的应用程序,但没有更多的努力比典型的Win32控件。是不可能的。但是剥皮一般来说并不难,只是比你愿意花的时间要多。
你的下一个问题是:一旦你有一个皮肤的应用程序,你需要一个专业的平面设计师来开发一个好的皮肤。太多的小项目开发者认为他们可以制作自己的皮肤,但看起来总是很糟糕。如果没有一个设计专家,你想要的性感的职业形象是不可能的。
最后,无论您最终使用什么花哨的自定义皮肤,其功能都可能需要自定义。也就是说,如果你想要非矩形控件或动画,这些都是你必须花时间去开发的东西。
使用像Qt这样的工具包是一项不错的投资。但这是一种无论你如何分割都需要花费大量精力的细节。
有点离题:由UI专家正确设计,默认的窗口控件往往看起来非常专业。使用本机windows控件有很多好处,在你重新发明轮子之前,你应该仔细考虑一下:
- 辅助功能,如键盘导航,屏幕阅读器,高对比度。你真的打算重新发明Windows控件提供的所有可访问性特性吗?或者是否值得将残疾人排除在你的应用之外,这样你就可以使用一个皮肤(更不用说使用无障碍功能的非残疾人了)?
- 调整。您的皮肤是否意味着禁用任何窗口大小的调整?再问一次,这值得吗?
- 有些东西不能很好地剥皮。例如滚动条和菜单。一些开发者重新创造了它们(滚动条尤其难以重新创造),而另一些开发者则不去修饰它们。
- Windows主题。Windows主题不仅仅是开始菜单的颜色;它应该决定整个操作系统的外观。使用标准的窗口控件允许用户使用内置机制来选择外观。
该应用程序中可能没有一个控件。
相反,整个东西呈现为图像。有一个背景图像,以及一些覆盖图像(大部分是透明的),以提供鼠标高亮,禁用控件等。唯一没有预渲染的是当前曲目和播放列表信息,它们是带有特定字体的纯文本。
可以用另一个映像执行命中测试。
程序员几乎不需要做任何工作来实现花哨的设计,这一切都是由美工完成的(并且像Photoshop这样的程序在编辑器中支持图层,使得构建所有覆盖层非常容易)。
缺点,当然,是按钮不完全像普通的Win32按钮做。它们不支持键盘焦点(尽管可能有热键),只是在鼠标上激活。可访问性很糟糕,没有屏幕阅读器的信息,应用程序不尊重系统字体大小设置。为了让视力差的人也能读懂UI,需要一种完全不同的皮肤。
c++团队编写了一个名为Hilo的示例(就像夏威夷的那个地方),它不使用任何框架(没有ATL,没有MFC),并且都是本机代码。它使用了许多Windows 7的功能和一些令人愉快的图形和动画。所有的代码和设计都是可用的和文档化的。看一看。
如果你想深入挖掘任何特定应用程序的底层,你可以启动Spy Utility,看看一个界面被分解成多少个控件:
我想要spy++,但是我没有Visual Studio
WPF有类似spy++的工具吗?
例如…在蒙皮模式下窥探Windows Media Player发现有一个名为WMP Skin Host
的窗口类,您可以看到它有 0个子窗口。(常规的非蒙皮模式被分解成一些列表框和按钮,例如。)
根据我的经验,"现代"皮肤通常是一场灾难,当人们重新实现太多,试图"看起来很酷"。它阻碍了自动化(通过像AutoIt这样的东西),更不用说为残疾人提供的辅助功能了。而且,如果你不使用基于操作系统的主题化API,那么今天看起来很酷的东西就不会一直流行下去。
(注意:因为我一般是Qt的粉丝,我建议看看QStyle和QStylePainter。但这更像是"主题化"而不是"剥皮"。
我会非常谨慎地在应用程序中使用皮肤,除非我发现我是在为一个绝对需要它的市场开发(如音乐播放器)。
通常,您可以使用GDI(+)渲染来呈现自定义控件。
如果你不介意进入c++/CLI,这里有WPF,它提供了对用户自定义样式和模板的相当广泛的控制。
你可能想好好看看SkinCrafter。它成熟、稳定,而且非常灵活。我不再使用它,但我的经历是相当愉快的。
您可以使用外部布局引擎,其中一个是来自terra informatica的html layout,这个也可以使用一些专业软件
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- " sizeof "操作员在编程中真的很重要吗,尤其是在构建大型应用程序时?
- 我真的应该为我的应用程序使用单个qss文件而不是为每个(UI)类使用一个吗?
- c++ /WIN32一个看起来很专业的应用程序——这真的可能吗?