大概流程:
第一步:C++基础。类的特征,多态、重载、等等基本只是要知道吧。
第二步:模板 进而是STL Atla ,然后是泛型;
第三步:COM。
COM就是一种远程过程调用,即你请求的代码是在另外一个进程中运行的,通过某种
通信协议来回传递参数和结果。COM提供了一种机制,可以跨进程通信,甚至跨机器通信。
使用到了智能指针、泛型等前面学习的技术
DCOM。
DCOM进了一步,服务者可以在另外一台计算机上。
第四步: 学会了COM,就可以多理解一点ActiveX了,那么再学习一点dll(动态链接库)的知
识,我们就已经可以写OCX控件了
学习C++的深入技巧
C++在类的基础上,经过这么多年的发展,其实提供了很多深入的概念,看起来很复杂 ,
其实我看也很简单。比如模板,我的理解就是“类的类”,大家说是不是?
既然模板理解了,STL,ATL这些,静态模板库,动态模板库,还难理解吗?就是一大
堆类的类,可以借此实现很多应用中需要的类,不需要程序员再自己写而已。
ok,STL都理解了,泛型开发还难吗?所谓泛型开发,其实就是我做一个模板,来定义
一套算法规则,但是呢,我希望这个算法规则,能进一步抽象,对核心数据类型不要限死,
我把各种数据套进去,都可以用,这样,仅算法这部分,我不需要重写了。你想想是不是这
个道理?
学到这里,C++和C,其实已经差不多了。再学语言,就是求全责备,过于钻牛角尖了 。
5、学习应用开发
前面说了,学习语言,目的不是让别人认为自己是专家,是为了写程序赚钱。因此,语
言学完,要学习应用开发。
什么叫应用开发呢,我会一门语言,但是,客户不懂,客户说的很直接,在Windows
下给我写个程序,我要什么什么功能。为啥Windows呢?因为我习惯。
OK,很多时候,应用开发要尊重客户习惯,一般说来,语言这个东东,还是要结合具
体平台的开发,才能开发出有意义的应用程序卖钱。那么,一般说来,客户端是Windows
系统,服务器是Linux,这些都是行业习惯,嵌入式不好说,各种平台都有,Palm,S60,Linux,
WinCE,等等。要根据自己的目标客户来定。
当我们选定目标平台后,有一个问题,选什么语言,很多时候,学生和商用程序员差别
就在这里,学生一般没得选,自己会啥就用啥呗,企业里的程序员不会,要先评估需求,看
哪个语言更合适,不会的语言,要去学。
ok,假定我们选了C 和C++,那么,我们需要选择开发平台,Windows下不用说了,VC,
这是最好用的,Linux下呢,gcc,其他的也差不多。
假如我们开发VC,并且使用C++,这个时候,才需要考虑学习MFC 了,因为这是微
软的标准类库,至少Windows平台下,它最权威,你看见没有,我们从学习开始,走了多
少步,才走到MFC?是不是MFC不是学习 C++上来就必须学的?
6、学习MFC
学习MFC,很多人一上来就开始看其体系架构,看得一头雾水,那个模块关系依赖
我到现在都看不懂。
呵呵,其实不是啦,和学语言一样,我们学MFC的目的,也不是希望成为MFC 的
家,而是要利用MFC开发Windows应用程序,为我们赚钱。看见没?MFC 是手段,不
目的,目的是开发Windows程序。
其实Windows下,有一套很标准的C接口,叫 Win32API,这个才是Windows的标
编程核心,因此,学习MFC,真实的目的是理解Windows程序开发,建议可以先学习
Win32API,看来我们又回到C了哈,呵呵。刚开始学C有用吧?
7、Win32API
其实Win32APi不难学的,因为虽然它很大,有很多接口,但不是必须的,我们真
个简单的Windows应用,其实用不到这么多的。做个简单的Dialog,然后实现个功能,
遇到的接口函数,其实绝大多数,就是以后常用的了。把常用的记熟练,就ok了。
关键是,这个时候要通过WinMain方式,去理解Windows的事件机制,这是核心
实说起来简单得要死。就是以前你的程序,由于没有系统支撑,很多事必须自己做,比
查鼠标和键盘输入,你需要写个死循环,自己不断去看,而Windows说,这些事你不要
了,我来做比你好。你没事就玩去吧,我把和你相关的消息放到一个队列里,就是你的
队列,你自己没事去找找看,有没有新消息来,有就做事,没事就玩好了。很简单是不
当然,Windows是多任务操作系统,有时候,我们的逻辑需要并发一些功能,比如
我在等鼠标键盘消息的时候,需要再看看打印机准备好了没有,这里就需要理解并行计算
这和语言无关,和操作系统无关,这是另外一个话题,这里不多说了,你可以自己找找
开发的相关资料看。
看见没,为了学习好Windows编程,其实我们不仅仅需要学习语言,还要学习操作
统,并行计算原理,内存原理,可能有时候还需要学习网络通信,等很多知识,所以说
凭学习语言,是成不了商用程序员的,一个合格的程序员,需要理解的东西,太多了,
为学习。
当我们把Win32API,以及基本的窗口化程序设计理解了,就可以回到MFC继续学
了。是不是有点递归返回的意思?呵呵。
8、回到MFC
原来学MFC很难的,因为其封装了太多细节,很难理解透彻。不过还好,我们有
师的深入浅出MFC,去找本来看看,如何从Win32API的纯C编程,改变为MFC 的C
方式,看这个最快,基本上前6章看完,已经会了,这里我就不多说了。
9、COM
COM、COM、COM,我最头疼的COM,呵呵。
COM就是一种远程过程调用,即你请求的代码是在另外一个进程中运行的,通过某种
通信协议来回传递参数和结果。仅此而已。DCOM进了一步,服务者可以在另外一台计算
机上。在公司开发中,大家可能各做一块,如果要合作,Windows下建议多使用COM。( 我
个人喜欢socket通信哈)
简单说,COM提供了一种机制,可以跨进程通信,甚至跨机器通信。不过,为了传递
各种类型的参数,COM可谓是无所不用其极,它发明了智能指针,可以指向任何类型的数
据,同时,为了实现智能指针,它使用了大量的C++泛型设计,看见没,C++的基本功就起
作用了,还用到了ATL。
学习COM,要注意一个接口的概念。由于开发者是不同的人,调用程序和服务程序,
可能不是同一种语言,OK,不能简单提供一个C 或C++的.h文件来解答接口,因此,COM
提供了标准接口,使用者在程序内部,以查询方式获得可用接口,进而以接口ID 调用。很
累人的。
学会了COM,就可以多理解一点ActiveX了,那么再学习一点dll(动态链接库)的知
识,我们就已经可以写OCX控件了。一般说来,OCX控件是个很好的设计,哪都能用,一
个软件的模块,最理想是开发成这个样子,比exe灵活。
10、没了。
按少林派说法,学了上述这些,其实已经算打过18铜人阵了,已经可以下山助明主,
扫奸佞,扭转乾坤,解万民于倒悬了。
不过,关键是你通过上面的过程,是不是已经学会了学习的方法,再遇到新的东东,是
不是已经不难学了?这大概就是武学中的悟性了,有了这个根基,以后只要慢慢修炼,估计
20 年后,可与天下英雄一较短长了。