如何使用C++为Windows应用程序创建GUI?

问题描述:

我决定如何为小型C++/win32 api项目(工作Visual Studio C++ 2008)开发GUI。该项目只需要几个组件就可以启动主流程,因此它的重量非常轻(只有1个按钮和一个文本框几乎...)。我的问题是这样的:如何使用C++为Windows应用程序创建GUI?

我没有在Windows上开发GUI的经验,但我可以轻松学习。那么,我应该使用什么?一个可视化编辑器(拖放代码生成器:到目前为止我对桌面GUI设计的偏好(java/swing))。或者我应该使用一个特殊的图书馆?无论哪种方式,我应该使用哪种库或视觉编辑器?我听到有人提到在C#中编写GUI,然后调用C++代码......事情是,这是一个非常简单的GUI,我会发现将它全部保存在C++中会更容易,但是我对任何最好的建议是。

如果你正在做一个非常简单的GUI和你已经在使用Visual Studio那么它可能对于使用MFC来说是有意义的。你可以使用Visual Studio的MFC向导来创建一个基于对话框的应用程序,在它上面放置两个控件,然后离开你。

MFC已过时并且有其公平的烦恼份额,但如果您只是在谈论按钮和文本框,它肯定会为您做好工作。

我对Qt没有任何经验,所以我无法比较这两者。

迄今为止最好的C++ GUI库有Qt,它是全面的,易于学习,非常快速和多平台。

啊,最近得到了LGPL许可证,所以现在你可以免费下载,包括商业计划

+0

v4.5将获得LGPL许可,但尚未发布。 – sth 2009-01-28 19:16:10

+1

QT的主要优势在于它是跨平台的。你可能不认为你现在需要它,但是等到几年后,你想要移植...如果你用QT去了,你会笑的。 – jkp 2009-01-29 15:57:08

+2

仅仅因为你可能想在几年内在多个平台上运行而编写跨平台代码是一个可怕的理由。在为多个平台编写代码方面存在重大的开发开销,除非您有非常好的业务案例才能这样做,否则您不应该这样做。 – 2009-01-29 16:27:22

来自诺基亚的Qt绝对是您的选择。另一个选项是gtk,但Qt更好地支持和记录。无论哪种方式,他们都是免费的。而且它们都被广泛使用和众所周知,所以很容易找到你的问题的答案。

只需创建一个新的MFC C++应用程序。它的内置,很容易,世界上有成千上万的例子... ...

另外,你可以在Visual Studio中设计你的对话框,给它们变量名,并且为你生成90%的代码。

对于这样一个简单的应用程序,即使MFC会过度杀伤。如果不想引入其他依赖项,只需在普通的vanilla Win32中进行。如果你从未使用过MFC,它会对你更容易。

查看Charles Petzold的经典“编程视窗”或一些在线教程(例如http://www.winprog.org/tutorial/),您就可以开始了。

如果您想了解win32,WTL http://wtl.sourceforge.net/是与MFC相当的轻量级版本,但您必须热爱模板才能使用它。

如果你想要简单的东西MFC已经集成到VS中,它还有一个额外的代码基础,并且已经知道网络中已知错误的解决方法。

另外Qt是一个非常好的框架,它有一套很好的工具,对话框编辑器,主题和其他许多东西,再加上你的应用程序已经准备好跨平台了,虽然它需要一些时间来习惯。

你也有Gtk,wxWindow,如果你已经在linux上使用它,你将没有问题。

我非常喜欢简单地使用Microsoft Visual Studio并编写本机Win32应用程序。

对于一个简单的GUI,您可以简单地创建Dialog Box并将其用作主应用程序窗口。由Visual Studio中的Win32 Project向导创建的默认应用程序实际上会弹出一个窗口,因此您可以使用对话框的replace窗口并用类似(但更简单)的DialogProc替换WndProc。

那么问题就是工具和成本之一。 Visual C++的Express Edition除了实际创建对话框模板资源外,还可以完成您所需的任何操作。为此,您可以在RC file by handin memory by hand中对其进行编码。相关SO问题:Windows API Dialogs without using resource files

或者您可以尝试其他人推荐的其中一个free resource editors

最后,Visual Studio 2008 Standard Edition是一个昂贵的选项,但为您提供了一个集成的资源编辑器。

我强烈建议不要使用普通的Win32,因为它很难在任何情况下都能正常工作,它的工作非常单调乏味,Common Controls库不是,而是完成。另外,大部分的工作都是为你完成的。

每当我结束了简单的Win32操作,我必须在最琐碎的任务上花费至少几个小时,因为我必须查找所有参数,标志,函数,宏,并弄清楚如何连接它们正常。我通常更喜欢简单的拖放式,不要让我使用我的大脑类型的解决方案,只需在2分钟内将它们砸在一起。

作为一个轻量级的工具包,我建议omgui它有一个干净漂亮的API。但是,它并没有配备任何工具。

如果你需要工具支持,你最终可能会想要去MFC(内置于Visual Studio中的资源编辑器)或Qt。我不知道wxWidgets是否有任何工具,但我认为它有。

编辑: David Citron提到,显然Visual Studio中的资源编辑器会生成与Win32兼容的资源文件,所以如果您想保持简单,那么这可能是首选方法。

带一些文本和按钮的简单“窗口”就是一个MessageBox。您可以使用单个函数调用创建它们;你不需要任何图书馆。

避免QT(对于菜鸟)或任何无用库(荒谬的这样一个基本的东西)

只需使用VS Win32 API的向导,广告按钮和文本框......,这一切!

在25秒内!

我已经使用wxWidgets进行小型项目,我喜欢它。 Qt是另一个不错的选择,但对于商业用途,您可能需要购买许可证。 如果你用C++编写,不要使用Win32 API,因为你最终会使其面向对象。这并不容易且耗时。此外Win32 API有太多的宏,并感到它提供了很多复杂的东西。