【发布时间】:2009-05-17 22:53:22
【问题描述】:
我已经编写 C++ 控制台/CMD 行应用程序大约一年了,并且想进入 Windows GUI 应用程序。对于那些曾经走这条路的人,你能给我什么建议/提示。例如:好的阅读材料、教程、接近策略等......
我知道这是一个非常广泛的问题,但我真的不知道如何/从哪里开始,因此不知道如何正确地提出这个问题。
【问题讨论】:
标签: c++ visual-c++
我已经编写 C++ 控制台/CMD 行应用程序大约一年了,并且想进入 Windows GUI 应用程序。对于那些曾经走这条路的人,你能给我什么建议/提示。例如:好的阅读材料、教程、接近策略等......
我知道这是一个非常广泛的问题,但我真的不知道如何/从哪里开始,因此不知道如何正确地提出这个问题。
【问题讨论】:
标签: c++ visual-c++
出于以下几个原因,我强烈推荐使用Qt Libraries:
老实说,我为 Windows 开发软件原生浪费了几年时间,而我本来可以提高工作效率。
【讨论】:
对于 C++,您有两种选择,Native 或 Managed。
对于本机开发,我的团队(在 Microsoft,在 Windows 中)使用 Windows Template Library。它对我们非常有效。
您应该了解 Win32 的基础知识以及 Windowing 的工作原理。经典著作是Programming Windows®
对于托管开发,您可以将 C++ 与 Windows Forms 结合使用。但是,windows 窗体已被Windows Presentation Foundation (WPF) 取代。
【讨论】:
我对 Windows C++ GUI 编程的最佳建议是不要进行 Windows C++ GUI 编程。
我意识到,如果它不合格,这是一个非常无信息/智能的响应,所以我会注意你没有声明你需要进行 C++ Windows GUI 编程,但是你“想进入 Windows GUI 应用程序。”如果是这种情况,并且您没有使用 C++ 的非常具体的理由(即,用 MFC 编写的庞大的现有遗留代码库或您想要为其构建前端但会很痛苦的一堆 C++ 代码暴露于 .NET 代码),那么走 .NET 路线并开始学习 Windows 窗体或使用 C# 或您选择的其他 .NET 语言的更好的 WPF 将会变得更加容易和高效。
如果您确实需要使用 C++,那么我会推荐第三方工具包,如 Qt 或 wxWidgets,因为 Microsoft 的 C/C++ GUI 编程工具的状态现在很糟糕。
【讨论】:
大多数窗口库和技术都使用类似的习惯用法。选一个来学吧。
Windows Template Library 在坚持使用 C++ 的同时,是 Microsoft Windows 的一个非常好的饰面。
对于跨平台 C++ 窗口工具包(它们可以在 Microsoft Windows 以及其他平台上运行),您可以尝试QT 或wxWidgets。
【讨论】:
好吧,对于 Windows GUI,习惯于大量引用 MSDN,假设您想直接处理 API。
我最喜欢学习基础知识的资源是theForger's tutorial,但那里有数百本书和其他网站。
【讨论】:
我想一个重要的起点是您的工具包。您标记了这个 visualc++,所以我假设您正在查看它,但请记住还有其他工具包,例如 Qt。
我建议从Microsoft's tutorials开始。
【讨论】:
+1 表示 Qt。我会将文档放在我对 GUI 系统的需求列表的顶部。 Qt 有很棒的文档,背后有一个庞大的社区。还有几本关于它的书。如果您独自工作而没有其他团队成员可以依赖,那么好的文档非常重要。替代品是 wxWidgets、MFC、WTL、FLTK 等等。他们都有优点和缺点。例如,FLTK 很小,只提供 GUI,而 Qt 和 wxWidgets 还包括网络、数据库访问等。在诺基亚收购之后,Qt 似乎势头最猛,例如 Qt Creator 的发布使您能够在 Visual Studio 之外开发应用程序.
【讨论】:
自从我在 Windows GUI 上使用 C++ 已经很长时间了,我的话总是避免在 Windows GUI 中使用 C++,除非你有很好的理由,我的意思是一个很好的理由,如果你需要一些性能 C# 比足以应付 90% 的情况,如果您需要更多功能,请将性能关键的东西写入 C++ dll 中,然后从 Windows 窗体或 WPF 应用程序中调用它。 它将为您节省大量时间。 仍然是我的观点,如果你有另一个我完全尊重这一点
【讨论】:
第一个问题是,您想用 C++ 开发免费、开源、供个人使用还是商业应用程序?
第二个问题是你想为 Windows、Mac、Unix 还是 Linux 开发?还是所有这些,即使对于移动平台?
如果你和我一样是 Windows 用户,并且只想为 Windows 开发,我的意思是不跨平台,你可以使用 Win32 API,虽然,学习 Win32 API 更难,但它让您完全控制机器。相信我,没有其他工具可以完全控制机器。如果您不喜欢 Win32 API,出于任何原因,您可以使用 MFC,这是 Microsoft 的另一项技术,但不是免费的、陈旧的并且现在已经很少受到关注。如果您决定使用 .NET 平台进行开发,那么您拥有 C++/CLI,它是用于开发 .NET 应用程序的 C++ 语言的扩展。 .NET 为您提供类型安全、OOP 和内置垃圾收集器,在一个包中为您提供与 Windows 和 x86 或 x64 机器相关的所有 API。 .NET 有自己的世界!微软也决定将 .NET 移植到其他操作系统,Mono 项目就是一个例子……您可以使用 .NET 开发几乎所有类型的应用程序。
如果您想为跨平台开发 C++ GUI 应用程序,那么 Qt、WxWidgets 和 U++ 可以为您提供帮助。您可以使用这些库编写一次并在任何地方部署。许多开源 IDE 和编译器也可用于轻松开发 C++ 应用程序。请注意,如果您不想为跨平台开发,任何跨平台库都会产生开销,并且不可避免地会增加可执行文件的大小。
您的 C++ 知识是否足以编写软件系统?
事实上,如果你对C++的了解不够深,而且你不了解OOP、封装、类、接口、类型、编程模式等编程方法,你就无法使用任何潜力十足的工具包。 不要忘记每个工具包、框架或 API 都是用某种编程语言实现的。如果您确实非常了解该语言,则可以很好地使用该工具包。我想,你会明白我的意思的。
【讨论】:
抛开WPF或者VC++或者Qt,你也可以试试几个库,比如:
这里有一个使用 Openframeworks 开发 Gui 的活跃项目:
http://www.syedrezaali.com/blog/?p=2172
【讨论】:
您熟悉 Microsoft Visual Studio 和 .NET 技术吗?既然你想为 Windows 平台开发,为什么不先看看Microsoft Visual C++ Express Edition.?使用 MS 提供的工具进行一些探索并搜索一些教程。
【讨论】:
我们在 2020 年,但这个问题仍然是相关的。我同意 Qt 用户的看法,这是一个很棒的框架。
但是,还有C++Builder 可以在设计时为您提供可视化的 GUI 设计。 C++Builder 应用程序可以在 VCL(仅限 Windows)和 FireMonkey(跨平台)框架上构建。 Clang 编译器可以生成 32 位和 64 位本机可执行文件。 C++Builder 的社区版是免费的。 Delphi 无缝集成:C++Builder 项目可以直接包含 Delphi 文件并使用任何现有的 Delphi 组件包和库。
【讨论】: