在你看来,什么是在Windows中创buildGUI的最佳方式? 用gtk或win32 api?
你推荐GTK的Windows? 是的? NO? 为什么?
让我们来看看。
就个人而言,如果我做特定于Windows的东西,我使用.NET – 在Visual Studio中的工具是非常强大的,它是一个伟大的无所不包的套件。
对于平台无关的东西,我使用Java,但这可能不是您的选择工具。 我见过QT用于这个目的很多。
如果你只是为了窗口的GUI,我会强烈推荐WIN 32 Api。 我已经在GTK +,pyGtk,FLTK中做了很多的应用程序,并学习了Qt,MFC和SmartWin ++。 相信我,但我喜欢Win32 Api最好的。 它可能有一个陡峭的学习曲线,但创建本地Windows应用程序,它是最快和最好的。 而更复杂的你的程序得到,更容易的Win32 Api与其他工具包进行比较。 在Win32 API中你可以做的事情,你不能在任何其他的工具包。
测试:
开始时间(简单的菜单和按钮gui):GTK + = 7秒; Qt = 4秒; WxWidgets = 3.32秒; FLTK = 1秒; Win32 Api = 0.34秒;
采取的空间:Gtk + = 132 kb; Qt = 4.5 mb; WxWidgets = 4.5 MB; FLTK = 54kb; Win32 Api = 6.5 kb;
你真的有很多的GUI工具包/框架可供选择:Qt,wxWidgets,GTK + / gtkmm,WinAPI,MFC,.NET WinForms / WPF …这些只是流行的。
既然你限制自己的C ++,我会罢工.NET,因为.NET上的C ++旨在作为非托管和托管世界之间的连接。 这并不意味着你不能将它用于其他类型的开发,但考虑到语法尴尬和无数的陷阱,我不会去用它。 此外,VS的WinForms代码生成器将表单的代码放入头文件.. brrrr
正如其他人所说,WinAPI是用C编写的,速度非常快,功能强大,但是程度很低,不容易编程/学习。 MFC将是一个选项,因为它是用C ++编写的,比WinAPI更容易使用,而且功能也非常强大。 但是,它已经过时了(主要是因为.NET的存在)。
我不会推荐用于Windows的 GTK + / gtkmm(一个用于GTK +的C ++包装器) ,因为你没有获得原生的Windows外观,在开发人员的机器上设置起来相当麻烦,而且还需要大量的依赖安装在用户机器上。 这实际上是可惜的,因为特别是gtkmm有一个非常漂亮的阶层和设计。 可能是设计最好的GUI库之一:)
这就是说,我会推荐什么? Qt或wxWidgets。 两者都是用相当现代的C ++编写的,积极开发,具有良好的库设计,运行多平台并提供大量的功能。 无论如何,请在这里回答一下答案中列出的一些库,看看哪一个可以让你做最想做的事情:)
win32 api太复杂了,MFC太烦人了。 我在Windows中使用了MFC,win32api和Qt。 在我看来,Qt是最好的。 我没有尝试GTK,所以对此一无所知。
过去我曾经使用GTK +进行多平台应用程序。 我发现学习和使用相对简单。 在我看来,GTK +的主要优点是您将能够将应用程序移植到其他窗口系统。 主要的缺点是它看起来不像其他的Windows应用程序。 如果你正在做跨平台工作,或者已经非常熟悉GTK +(没有时间去学习一个新的工具包),我会推荐它。
两者都是为c,但是gtk(gtkmm)有一个很好的包装。
gtk有它自己的样子,所以在用户端没有用户界面元素的皮肤(用windows风格)。 但我更喜欢用它编程。
win32,mfc,.net大多局限于ms visual studio,而gtk很难与vs一起使用
你应该看看win32,.net,gtkmm和qt。 试着编写一个简单的hello世界程序
win32的好处:
缺点:
gtk的上升(mm):
缺点:
如果Linux(或Mac)的兼容性是你关心的话,那么Qt。 其他Win32。
就我个人而言,我更喜欢Qt,但这取决于您想要制作的用户界面。
对Win32:
低层次,高复杂性来完成微不足道的事情。 你必须做所有事情
如果你走这条路,我会推荐一本像Petzold的书。
赞成Qt:
好看的图形用户界面
通过创建样式表可以很容易地改变外观和感觉
信号和插槽机制通知您的UI事件,如“点击按钮”等
好的布局系统
与Visual Studio IDE集成
现代面向对象的c ++代码,易于理解和使用
Qt助手(非常好的文档)
相对自由的许可(LGPL)
Qt Designer – 所见即所得的设计工具,您可以使用表单设计
附带丰富的其他c ++功能,包括XML,网络,事件回调,线程,数据库访问等
对Qt:
临WPF:
您可能想要尝试Winforms或WPF。 如果您仅限于使用C / C ++,则可以使用编译器的/ clr选项嵌入.NET代码,以便为Winforms或WPF嵌入.NET代码。 资料来源:
http://msdn.microsoft.com/en-us/library/k8d11d4s(VS.71).aspx
http://msdn.microsoft.com/en-us/library/ms754130.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.aspx
个人经验
对于平台独立开发,我会推荐Qt而不是当前的GTK。 与Qt和Win32相比,GTK2绘图速度非常慢。 如果你喜欢原生的外观, wxWidgets是为你制作的。