在C++中进行本地Win32 GUI编程还是选择wxWidgets?

3

我喜欢编写GUI软件(但没有GUI编程经验),需要它尽可能小,界面快速响应,并且在一个自包含的exe文件中具有本地化外观和感觉。仅限于Windows 2000到Windows 7(或其他名称)。那么,最佳选择是什么?Win32 API还是wxWidgets?


你用什么集成开发环境?Visual Studio吗? - Kirill V. Lyadvinsky
7个回答

3

Win32环境下,您不需要在发布包中包含wxWidgets库(这样可以减小发布包的体积)。虽然更加困难,但我认为这是更好的做法。


3

使用wxWidgets。相比Win32 API,它更简单。同时,可以查看QT,它更易于操作且更加丰富。


1
虽然Qt很好,但它不符合OP的“小”的标准,因为它必须包含一堆Qt DLL或一个巨大的静态链接库。 - Paul Dixon
我同意,我忽略了“小”的细节。 - Umair Ahmed

2

大约两年前,我也曾面临类似的选择。我选择了Win32 API。掌握旧学派的做事方式让人感到一定的自豪。

顺便说一下,Windows API 有一个被认为是肮脏和设计糟糕的声誉。我不同意这个观点。我发现它非常灵活,但又保持着一致性(大约90%左右,因为向后兼容补丁会使其变得有些混乱)。


2
API并不一致。例如,对于返回字符串,有多种不同的方式用于在成功时返回字符串长度或在失败时返回所需缓冲区大小。看起来每个开发组都有自己偏爱的方法,并且他们都被允许按照自己的方式进行操作。 - mghie
对于DotNet开发人员来说,学习Win32太难了。但至少这是Windows的纯本地方式。 - Gray Programmerz

1
如果您有可用的非免费版本的Visual Studio,那么您最好的选择可能是使用MFC(Microsoft Foundation Classes)。这本质上是以更C++的方式使用Windows API。

我有 Visual Studio 的免费版本。 - user63898
MFC很糟糕。它到处使用hack,因为它是在Microsoft C++编译器支持异常之前编写的。 - Ben Voigt

1

从我所读的内容来看,它基于ATL,并且我使用的是免费的VC版本,所以它不会起作用。 - user63898

0

在Windows 7中,许多GUI API对于Win32应用程序来说并不直接可用。相反,您需要使用WPF(Windows Presentation Foundation)来访问一些新的GUI元素,这意味着您必须使用C#编写应用程序。

当然,如果您的目标是Windows 2000及以上版本,则WPF就不适用了。


1
有没有Windows 7的功能例子是无法通过WinAPI获得的?我相信通过WinAPI可以访问任何Windows功能。 - Kirill V. Lyadvinsky
简单的Win32 API图形用户界面程序在Windows 7上不能工作? - user63898
它肯定可以在Windows 7上运行。然而,一些高级GUI功能对于Win32应用程序并不容易获得(特别是所有基于DirectX构建的WPF控件)。 - Martin v. Löwis

-1

我认为最简单的方法是使用delphi:它是一个带有GUI设计工具的全能工具,不需要部署框架,非常适合初学者。

visual studio.net是更具前景的选择:强大、广泛应用、文档齐全、社区众多。

QtwxWidgets是跨平台解决方案。但我认为这是一种更复杂的方式。如果你想在除了微软Windows之外的其他系统上运行程序,那么这也是可以接受的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接