我想学习使用Visual Studio 2008进行C++ GUI编程。但是,我不确定从哪里开始。我在高中学过C ++,但没有学过GUI。我已经使用C#约3年了,这就是我“学习”GUI编程的方式。现在我想学习如何编写没有使用.NET框架的GUI界面,请问我该从哪里开始?
我想学习使用Visual Studio 2008进行C++ GUI编程。但是,我不确定从哪里开始。我在高中学过C ++,但没有学过GUI。我已经使用C#约3年了,这就是我“学习”GUI编程的方式。现在我想学习如何编写没有使用.NET框架的GUI界面,请问我该从哪里开始?
Charles Petzold的《Programming Windows 5th Edition》是Windows编程的圣经。
既然你说你已经做了大约3年的C# GUI编程,我会认为这意味着Windows Forms。一种尝试的方法是记住WinForms实际上只是user32
的面向对象包装器。因此,加载反编译器并查看某些控件的实现方式。您将看到Windows将这些奇怪的消息(如WM_PAINT
和WM_KEYDOWN
)泵送到各种控件的WndProc
。在普通的Win32或MFC编程中,仍然正在进行相同的操作。这样做将让您逐步剥离洋葱的层; 您也将更好地了解Windows Forms的工作原理。从那里开始,我建议阅读Petzold的《Programming Windows》;它可能有点老,但Windows的本机API并没有太多变化。祝玩得开心!
MFC现在已经几乎过时了。我建议使用WTL代替。
当有很多好的框架可用,如QT跨平台框架时,仅仅开始使用C++编程GUI并不是一个好主意。
一些异端的观点...
我不建议使用C++编写复杂的Windows GUI - 像C#或Delphi这样的语言/库组合更加高效。如果你想学习C++编程,我建议使用它来编写一个多线程服务器 - 一个简单的Web服务器就足够了。
如果你真的想要理解底层的Windows API,我认为有必要用C(而不是C++)编写一个简单的应用程序(比如一个简化版的笔记本)。你只需要这么做一次,但在这个过程中你会学到很多东西。
在任何人开始疯狂地点踩之前,让我说一下,我是一位拥有20多年经验的C++程序员,我真的很喜欢这门语言。
目前(Windows 8),微软推出了全新的API——WinRT,我对此感到非常兴奋。虽然我从未进行过MFC编程,但看过一些代码示例,它们看起来像90年代的C风格(现代C风格通常更好!)。因此,在不直接开始MFC的情况下,我想我会从WinRT开始。
:)