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

时间:2009-01-28 18:50:57

标签: c++ visual-studio user-interface winapi

我正在决定如何为小型c ++ / win32 api项目开发GUI(使用Visual Studio C ++ 2008)。该项目只需要一些组件就可以启动主流程,因此它的重量非常轻(只需要一个按钮和一个文本框......)。我的问题是:

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

11 个答案:

答案 0 :(得分:15)

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

啊,它最近获得了LGPL许可证,所以现在你可以免费下载它并包含在商业程序中

答案 1 :(得分:13)

如果您正在使用非常简单的GUI并且您已经在使用Visual Studio,那么只需使用MFC就可以了。您可以使用Visual Studio MFC向导创建基于对话框的应用程序,在其上放置两个控件,然后离开。

MFC已过时并且有一定的烦恼,但如果您只是在谈论按钮和文本框,它肯定会为您完成工作。

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

答案 2 :(得分:9)

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

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

然后,问题是工具和成本之一。除了实际创建对话框模板资源之外,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是一个更昂贵的选项,但为您提供了一个集成的资源编辑器。

答案 3 :(得分:3)

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

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

答案 4 :(得分:3)

我强烈建议不要使用普通的Win32,因为很难让它在所有情况下都能正常工作,这是非常枯燥乏味的工作,而且Common Controls库不是 完成的。此外,大部分工作已经为您完成。

每当我最终做到简单的Win32时,我必须花费至少几个小时完成最琐碎的任务,因为我必须查找所有参数,标志,函数,宏并找出如何正确连接它们。我通常更喜欢简单的拖放式不使用我的大脑类型的解决方案,只需在2分钟内就可以将它们甩在一起。

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

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

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

答案 5 :(得分:2)

来自诺基亚的Qt肯定是要走的路。另一个选项是gtk,但是Qt得到了更好的支持和记录。无论哪种方式,他们都是自由的。它们都被广泛使用并且众所周知,因此很容易找到问题的答案。

答案 6 :(得分:2)

对于这样一个简单的应用程序,甚至MFC都会过度。如果不想引入另一个依赖项,只需在普通的Win32中进行。如果你从未使用过MFC,那将会更容易。

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

答案 7 :(得分:2)

避免QT(对于新手)或任何无用的库(对于这样的基本事物而言是荒谬的)

只需使用VS Win32 api向导,广告按钮和文本框......就是这样!

在25秒内!

答案 8 :(得分:1)

如果你想了解win32,WTL http://wtl.sourceforge.net/是相当于MFC的轻量级,但你必须喜欢模板才能使用它。

如果你想要一些简单的MFC已经与VS集成,它还有很多基础的额外代码和网络中已知错误的解决方法。

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

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

答案 9 :(得分:1)

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

答案 10 :(得分:0)

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