您认为在Windows中创建GUI的最佳方式是什么?使用GTK还是Win32 API?
您是否推荐在Windows中使用GTK?是?否?为什么?
您认为在Windows中创建GUI的最佳方式是什么?使用GTK还是Win32 API?
您是否推荐在Windows中使用GTK?是?否?为什么?
让我们来看一下。
就个人而言,如果我要做一些Windows特定的事情,我会使用.NET——Visual Studio中的工具非常强大,这是一个很好的全面套件。
对于非特定平台的东西,我使用Java,但那可能不是你的选择。我经常见到QT用于这个目的。
在GUI工具包/框架方面,您有很多选择:Qt、wxWidgets、GTK+/gtkmm、WinAPI、MFC、.NET WinForms/WPF... 这些只是比较流行的。
由于您限制自己使用C++,我会排除.NET,因为在.NET上的C++旨在作为未管理和托管世界之间的连接。这并不意味着您不能将其用于其他类型的开发,但考虑到其笨拙的语法和无数陷阱,我不会选它。此外,VS的WinForms代码生成器将表单的代码放入头文件中.. 呃
就像其他人所说的,WinAPI是用C编写的,非常快且功能强大,但很低级且编程/学习不容易。MFC是一种选择,因为它是用C++编写的,比WinAPI更易于使用,也非常强大。然而,它几乎过时了(主要是由于有.NET的存在)。
我不建议在Windows上使用GTK+/gtkmm(GTK+的C++封装),因为您无法获得本机Windows外观,它在开发人员机器上设置非常麻烦,还带着许多依赖项,需要在用户机器上安装。这实际上很遗憾,因为尤其是gtkmm具有非常漂亮的类层次结构和设计。可能是最好设计的GUI库之一 :)
话虽如此,我会推荐Qt或wxWidgets。两者都是用(相当现代的)C++编写的,正在积极开发,拥有良好的库设计,可多平台运行并提供许多功能。无论如何,请尝试使用这里列出的几个库,并查看哪一个可以让您最轻松地完成想要做的事情 :)
Win32 API太复杂,MFC太烦人了。我在Windows上使用过MFC、Win32 API和Qt。在我看来,Qt是最好的选择。对于GTK我还没有尝试过,所以很抱歉不了解它。
2019年修改:看起来这些选项都已经过时了,那么跨平台的解决方案如何呢?比如React Native Windows、Electron。
两者都是针对C语言的,但gtk有一个很好的包装器(gtkmm)。
gtk有自己的外观,因此用户无法在界面元素上进行皮肤设计(使用Windows样式)。但我更喜欢用它来编程。
win32、MFC和.net主要限于使用MS Visual Studio,而gtk在VS中非常难以使用。
你应该去看看win32、.net、gtkmm和qt。只需尝试使用它们编写和编译简单的hello world程序即可。
win32的优点:
缺点:
gtk(mm)的优点:
缺点:
我过去曾经使用过GTK+开发一个多平台应用程序。我发现它相对来说很容易学习和使用。在我看来,GTK+的主要优点是你可以将你的应用程序移植到其他窗口系统上。而主要缺点则是它不会与其他Windows应用程序完全一样。如果你正在进行跨平台工作或者已经非常熟悉GTK+(并且没有时间去学习新的工具包),我会推荐使用它。
个人而言,我更喜欢Qt,但这取决于您想要制作什么样的用户界面。
反对Win32:
低级别、实现琐碎事情的复杂性高。你需要做 EVERYTHING
如果你选择这条路,我会推荐像Petzold的书。
支持Qt:
漂亮的GUIs
可以通过创建样式表轻松更改外观和感觉
信号和插槽机制通知您UI事件,例如"按钮单击"等。
不错的布局系统
与Visual Studio IDE集成
现代面向对象的C++代码,易于理解和使用
Qt助手(非常好的文档)
相对自由的许可证(LGPL)
Qt Designer - WYSIWYG设计工具,可用于表单设计
带有丰富的其他c++功能,包括XML、网络、事件循环、线程、数据库访问等
反对Qt:
支持WPF: