【发布时间】:2010-10-10 11:27:16
【问题描述】:
我想使用 Visual Studio 2008 学习 C++ GUI 编程。但我不知道从哪里开始。我在高中学习了 C++,但不是 GUI。我已经做 C# 大约 3 年了,这就是我“学习”GUI 编程的方式。现在我想学习如何在不使用 .NET 框架的情况下编写 GUI,那么我从哪里开始呢?
【问题讨论】:
标签: c++ user-interface visual-c++
我想使用 Visual Studio 2008 学习 C++ GUI 编程。但我不知道从哪里开始。我在高中学习了 C++,但不是 GUI。我已经做 C# 大约 3 年了,这就是我“学习”GUI 编程的方式。现在我想学习如何在不使用 .NET 框架的情况下编写 GUI,那么我从哪里开始呢?
【问题讨论】:
标签: c++ user-interface visual-c++
Charles Petzold 的“Programming Windows 5th Edition”是 Windows 编程的圣经。
【讨论】:
既然您说您从事 C# GUI 编程大约 3 年,我假设这意味着 Windows 窗体。将脚趾浸入水中的一种方法是记住 WinForms 实际上只是 user32 的一个面向对象的包装器。所以加载Reflector,看看一些控件的实现方式。你会看到像WM_PAINT 和WM_KEYDOWN 这样的奇怪消息被Windows 发送到各种控件的WndProc。在普通的老式 Win32 或 MFC 编程中,同样的事情仍在继续。这样做会让你慢慢剥开洋葱层;您也会更好地了解 Windows 窗体的工作原理。从那里,我建议拿起 Petzold 的Programming Windows;它已经过时了,但 Windows 中的原生 API 并没有太多变化。。玩得开心!
【讨论】:
MFC 现在几乎已经过时了。我建议改用 WTL。
好吧,当 QT 跨平台框架等许多优秀的框架可用时,开始使用 C++ 进行 GUI 编程也不是一个好主意。
【讨论】:
一些异端意见...
我不推荐使用 C++ 来编写复杂的 Windows GUI——像 C# 或 Delphi 这样的语言/库组合更高效。如果你想进入 C++ 编程,我建议使用它来编写某种多线程服务器——一个简单的 Web 服务器对初学者来说就可以了。
如果你真的想了解底层的 Windows API,我认为用 C(而不是 C++)编写一个简单的应用程序(比如,笔记本的简化版本)有一些话要说。你只想做一次,但在这个过程中你会学到很多东西。
在有人开始疯狂投反对票之前,让我说我是一名拥有 20 多年经验的 C++ 程序员,并且非常喜欢这种语言。
【讨论】:
您是否可以使用 Microsoft Foundation Classes 或 MFC 在 VC++ 中编写 GUI?这就是我过去编写 VC++ GUI 的方式。
多年来,有很多关于 MFC 的书籍。我相信他们中的任何一个都会做得很好。您可以在文献中找到参考 ATL,它是 Microsoft 对 STL 的迭代。多年来,MFC 和 ATL 有点合并,所以现在任何 ATL 也适用于 MFC 应用程序。
祝你好运,玩得开心!
【讨论】:
啊,我知道你的感受,想了解编译编程背后的魔力的老解释语言程序员。好吧,我找不到我用来学习windows编程的教程,但只知道周围有很好的win32教程,所以你不要浪费时间买书。 我找到了:http://www.relisoft.com/win32/index.htm 最新的教程,相信我。
【讨论】:
截至目前 (Windows 8),WinRT,一个全新的 API 已由 Microsoft 带给观众,我对此感到非常兴奋。从未做过 MFC 编程,但看过一些代码示例,它们看起来很怪异 90 年代的 C 风格(现代 C 风格通常更好!)。所以,不打算直接从MFC入手,我想我会从WinRT入手
:)
【讨论】: