在没有 IDE 的 C++ 中手动编写 Windows GUI

Posted

技术标签:

【中文标题】在没有 IDE 的 C++ 中手动编写 Windows GUI【英文标题】:Handcoding Windows GUI in C++ without IDE 【发布时间】:2011-01-23 11:39:05 【问题描述】:

嘿,我已经看到了一些关于这个主题的问题,但他们中的大多数只是试图指出使用 IDE 来创建 GUI 是否更好,这不是我的问题。

我想在未来使用 Qt 之类的 IDE 来编写更大的程序,但目前我是 C++ 的新手,尤其是 GUI,并且想学习如何手动编写简单的应用程序(例如“Hello World”-app一个按钮,可能是一个文本框和一个输出结果的函数)。 也许是为了防止讨论我为什么要这样做:这是因为我喜欢折磨自己,尤其是因为我讨厌某些东西(在这种情况下是 IDE)创建了我不理解的东西,但我必须使用它。

那么,有没有关于该主题的教程,简要介绍了使用 notepad++ 之类的编辑器对小型 c++ 应用程序进行手动编码?

【问题讨论】:

所以你想折磨自己。但是您希望以什么 GUI 框架/库为目标? Qt(只是库,不是设计器)、wxWindows、MFC,甚至直接是 Win32 API?后者是最受虐的。 你应该知道你是打算直接调用 WinAPI(最痛苦的方式——但也是最灵活的方式)还是你想使用它的抽象。一个常见的抽象是 MFC(但据我所知,您至少需要 Visual Studio 的专业版才能使用它)。另一种选择(例如 Google Chrome 使用的)是 WTL (en.wikipedia.org/wiki/Windows_Template_Library)。还有其他 GUI 工具包(通常独立于平台),如 Qt(它的 GUI 部分)、wxWidgets、FLTK 等,它们的抽象程度更高。 我不确定(就像我说的,该死的初学者),但是是的,WinAPI 似乎是最好的开始方式。我会查看今晚或明天发布的教程 stakx(今晚没有时间,电影院 :))并在今晚给出“投票”和“答案接受”,正如你所见,我是 *** 的新手 :) 希望所有这些都有帮助现在接受书面感谢,非常感谢 【参考方案1】:

如果你想学习 Win32,我(和其他许多人一样)推荐 Charles Peztold 的书:

http://www.charlespetzold.com/pw5/index.html

除非它自我拥有的版本以来发生了变化,否则它不假定任何类型的 IDE 或框架超出 Win32 本身和 C 编译器。它将为您提供有关 OS/API 工作原理的良好基础,并让您轻松理解基于它构建的工具和框架(如果您决定使用它们)。

【讨论】:

感谢您的回答,我觉得书对我来说太多了,我只想在切换到 IDE 之前获得编程 GUI 的基本知识。 您的选择,但即使您切换到使用框架等,坚实的基础也会对您有所帮助。了解 MFC 之类的东西在做什么以及为什么这样做非常有用,因为它们使事情看起来与他们怎么样。 (对于大型项目,MFC 是一个混淆层,与它对程序员的帮助一样多,甚至更多。:)) 无论您如何编写 Windows,Pezthold 中的所有内容都保持相关;有些工具只是让你走捷径。【参考方案2】:

以下是创建不需要任何库的 GUI 的教程,因为它针对本机 Windows API:

创建基于 Win32 的应用程序 (C++):http://msdn.microsoft.com/en-us/library/bb384843.aspx

(正如用户 Nubok 在上面的评论中所写,针对 Win32 API 进行编程非常费力。但您将了解很多有关 Windows 内部工作原理的知识。)

本教程假设您使用的是 Visual Studio;忽略它谈论基于模板创建新解决方案等的部分。那篇文章中的重要部分是代码示例。

在编译和链接代码时,您需要查看编译器手册,了解如何准确引用外部库等。只需确保在链接过程中包含 Win32 API 的导入库即可。 (注意名为 win32.libwin32api.lib 或类似名称的名称。)

【讨论】:

【参考方案3】:

winprog.org 上有一个很棒但过时的教程,涵盖了普通的 Windows GUI API。但它使用纯 C,而不是 C++。

【讨论】:

感谢您的回答,我会给您投票,但我还不能:) c 并不是我正在寻找的东西,尤其是因为我什至无法区分 c 和 c++ 但是我认为它也教一些基本的理解

以上是关于在没有 IDE 的 C++ 中手动编写 Windows GUI的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IDE 中调试 Cython

集成 Qt 框架、Netbeans IDE、Visual Studio C++ 编译器

C++ 生态:编译器IDE测试工具大全

怎么将编写的java文件放在src目录下?不知为啥默认的不在src下

C++ - 使用 Visual Studio 声明成员函数

“Hello world” Android 应用,文件尽可能少,没有 IDE,只有文本编辑器