如何学习Windows编程 经常有初学者询问如何学习Windows编程?

很多人从MFC开始学习,结果常常是一头雾水,知难而退;也有人毅力坚强,熬过了MFC的阵痛期,最后却是知其然而不知其所以然,并且思维被限制在MFC的框架之中,遇到稍微有点规模的程序就无从下手了。

以我个人的这些年的Windows开发经历,我建议Windows上的学习路线如下:
首先当然是语言的学习,比如C或C++(STL),它是平台无关的
然后可以从《Windows程序设计》(by  Charles Petzold )入门,从最原始的Windows API开始学习
接下来可以学习《Windows核心编程》(by  Jeffrey Richter ), 它会让你比较深刻的理解Windows的前台和后台机制
学完上面2本书,对Windows系统已经比较熟悉了,再要深入的话可以学下《Windows 图形编程》(by 袁锋)。

至此,已经可以用API的方式开发大部分Windows应用程序了,
接下来可以学一些常用库,比如MFC,WTL,ATL等,此时学习MFC和一开始就学习MFC已是截然不同的感觉,彼时痛苦难熬,此时会心一笑。
其他就是根据项目需要,专业知识的学习,比如COM技术,网络,D3D等。
===========================
c++ 的 stl windows sdk mfc wtl 这几个部分应该怎么学习啊 。除了上面4个还有什么要学习的 谢谢指导哦
 
 
1.打牢C++的语言基础。
2.STL是C++的标准库,基于模板技术,结合泛型设计思想,是一套学习C++本身的很好的库,但需要很好的C++语言功底。在一般的C++书籍中,都会有STL的章节,不过一般只是讲如何应用它。在学习数据结构的时候,结合STL来学习容器和算法,再好不过,推荐书籍《STL源码剖析》(侯捷),如果你觉得需要掌握更深层次的模版技术并加强对模版的正确认识和了解,请看《C++ Templates中文版》。
3.对于windows sdk,你可以看《windows 程序设计》(Charles Petzold),里面的例子全是用C写就的,有了C/C++的基础,这些例子都很简单。跟着书本循序渐进,你会获益良多。接下来,你可以看《windows核心编程》(Jeffrey Richter),里面有很多高级技术,例子也用C++写成。读完这两本书,你对windows环境下的编程就有了清晰的了解。
4.对于MFC,有了第三部的积累,小菜一碟。前提是第三部分你要掌握的非常良好。如果你初读《MFC深入浅出》(侯捷),你可能会觉得有所困难,不过不要泄气,硬着头皮也要学完前几章,待到你把前几章弄通后,哈,后面的就很容易学下去了,而且充满乐趣(对我而言是如此的)!
5.WTL,一个非常棒的Frame。你学好了模板,再结合你对MFC的了解,学习WTL再简单不过了。WTL最好的一个地方在于,它是基于模版和多重继承实现的。由于模版的特性,WTL所有的源代码都在头文件中,这些源码正是学习WTL的最好方法。到了这个阶段,你会觉得,看WTL源代码是一件颇为享受的事情,因为你得以一窥它是如何实现与MFC同名的一些函数的。自然,这里有一本书(其实不能算书,是Code Project上的一系列文章的集合),叫做《WTL for MFC programmer》,有中文版。 
关于其它,对于windows的高级技术COM/COM+,已经不是现今的主流技术了,《COM本质论》的作者也说在大行其道的今天,COM已经没落了,但现在windows的很多关键部分仍在应用COM,谷歌地球的自定义编程也是COM方面的内容。简单来说,COM是基于二进制防火墙的跨平台的技术,内容繁杂,你可以先看《COM技术内幕》,再看《COM本质论》,如果你感兴趣的话。我当时光看COM中的聚合,就搞得头大。
学完COM,你能干什么呢?还不到时候。接下来就到ATL(活动模板库)了,它是基于COM的框架。具体的内容我也没怎么学,我倒是买了本《ATL技术内幕》,留待以后学习吧。
抛开windows,但看C++本身,有很多有趣的东西。我首推《C++模板元编程》,这是一本考验耐性和智力的书。同时你必然就接触到了Boost库,这个库的名气很大,我就不赘述了。如果你有兴趣,可以看看脚本语言与C++的混合编程(仅是个人推荐,看你兴趣),其中之一就是Boost::Python和C++的混合编程(当然,Python是一种独立的脚本语言,Boost::Python只是用于C++编程的)。
还有什么呢,还是模板,依旧是泛型编程。先提一个项目,“大芒果”,魔兽世界的网络变“单机”的服务器。里面应用到了很多这本书介绍的技术:《C++设计新思维-泛型编程与设计模式之应用》。当然,对于这么大一个项目,这只是冰山一角。
还有吗?当然,数之不尽……

============================

提问者:  liyed32  | 浏览次数:2968次
我本来想先看看 windows程序设计的 可是  既然MFC 把他给封装起来了  我是不是先看深入浅出MFC ?
另外看深入浅出MFC  需要什么C++ 基础  例如RTTI 和 虚函数 继承?  谁给讲一下  学习的流程! 谢谢了!
 
  精彩回答
 
 
  
   
   检举| 2011-06-16 20:21
  
  
   

  
  
   1.c++语法要掌握.
  
  
   

  
  
   
2.windows程序设计是必需的,特别是象单文档程序,如果不了解消息处理细节,你直接上mfc的封装类,光一个CFrameWnd就可以让你深陷其中,云里雾里.
一些简单内容,直接跳过去就是了.
3.mfc学习,一本是李久近的,还是有一个国外的<深入解析mfc>.而侯俊杰的就省省吧.

1.c++语法掌握,主要是一本书<深度探索c++对象模型>.看完这本,神马语法都是浮云.
rtti,为类维护一个static类,由于static对于类的多个实例来说仍然只有一个,这样就可以通过static记录类继承信息来判断父子关系.c++编译器自动实现,只要关心相应的函数就行了.
mfc,刚好就是明显提供了这种类似的实现,主要用于消息映射表遍历.

象com类,它是用128位数,也就是uuid用来表达一个类名称,然后通过字符串比较,来判断到底要返回嘛类,这个体会一下.

   
=================================
1.c++ ,先确定你已看过《深度探索C++对象模型》,否则你一两年内仍然停留原来的水平。
2.<windows程序设计>必看的,弄懂win32下的编程框架,理解消息机制,务必把多文档那个章节看完。其它的,不用看了。就算要看,也是当手册看,或是用到时再看。
3.<windows核心编程>这一本看你的理解力,再快也要几个月吧。

4.这时可以学mfc了。
两个方向:
研究源码(以后应用时会得心应手一些,bug调试能力会比较强,很快能知道问题出在哪里),或是直接上手应用(吃力不讨好,这个只能是经验,经验)。具体看你时间而定。
追问
深度探索C++对象模型  真有那么重要? 我是想API和MFC一起学的,那样好不好?现在看MFC还是看的点懂,不过稀里糊涂的
回答
深度探索C++对象模型 其实就是了解一个内存模型,这是必需的。早看早受益,否则以后接触到一些类设计,如果不能理解内存模型,基本上是体会不到这样设计的妙处的。

windows核心编程 可以不看,直接跳到mfc的学习上。
但1,2两点理解之前,别碰mfc, 否则除了浪费时间,还是浪费时间。


更多推荐

windows 编程的学习次序