为何要学习MFC?
来源:互联网 发布:澳大利亚旅游 知乎 编辑:程序博客网 时间:2024/05/03 11:19
有些人说,MFC过时了。从某些层面上来讲,确实是这样的。随便在求职网上一搜,招MFC程序员的很少,并且以工控和图像处理为主。工控软件由于底层为与硬件打交道的C语言,所以用与C紧密切合的C++语言的类库MFC来做界面确实很方便。并且工控软件对界面外观也没有什么要求。所以MFC在工控软件领域还是占着一席之地。
还有一个领域我们不能忽略,那就是个人软件、小型软件。在猪八戒之类的威客网上软件开发的栏目搜一搜,可以发现大部分的windows程序开发的需求,威客们都是用MFC或Dephi来开发,当然,还有一些易语言。如果你要开发一款个人用的小软件,MFC是很好的选择。
对于这种个人软件、小型软件,MFC还是有着很多优势的:
1.体积小,静态编译后体积也不大。
2.在各版本的windows上兼容性较好。
3.对windowsAPI的调用较方便。
学习MFC不仅仅要学习用MFC,还要学习MFC的框架设计思想。如果仅仅会用MFC的话,可能在找工作的时候,一旦工作内容离开了MFC,就什么也不会了。MFC作为一个诞生了20年的成熟的框架,其设计思想是很值得我们学习的。粗略读一读MFC源代码就会发现MFC的厉害之处,很多思想都让人很佩服,有时候看完一段源代码后,心里暗自感叹。无法想象MFC在那个连C++的STL都还没出现的年代,就用泛型编程技术写出了CList、CArray、CMap等容器。MFC不仅仅是将面向过程的API封装为面向对象的形式,他还在背后做了很多事情,包括简化一些过程,提高一些稳定性。如果让我把面向过程的windows socket API封装成面向对象的类,我肯定会这样想,嗯,socketAPI几乎每个函数的第一个参数都是SOCKET结构体,这是面向过程的特点,如果要封装为面向对象的类,自然是把这个结构体作为类的成员变量,然后封装socketAPI函数为类的方法,提供大量的默认参数,就OK。实际上并非这样,读一读MFC中CSocket的的源代码,就会发现实际上并非如此简单。MFC的CSocket类里,做了大量的工作,使我们用起来大大的方便了。如果你之前一直用socketAPI来开发网络程序,再来用MFC的CAsyncSocket和CSocket的话,会觉得,太方便了!仔细读一读MFC源码,真的对我们将来编写自己的类、设计自己的框架,有很大帮助!
一个好的程序员,不能只是会用现成类库的方法。
一个好的程序员,应该会封装、会设计类库、会设计框架。
在一个实际的项目中往往是这样的:我们需要开发一个windows平台上的软件,直接用windowsAPI吧,1.太麻烦2.面向过程的代码写的越多越头疼3.可重用性不强。使用现成类库吧,有时候无法满足我们特定的需求。这时候,我们就需要自己动手封装API,自己动手派生现成类库中的类,来添加方法。如果你不了解类库,派生下来后就会发现根本无从下手。很多公司在一些做了很久的项目上,往往都是有自己的类库、自己的框架,并不断的完善和扩展。这也是我们要学习类库、框架设计的原因。
- 为何要学习MFC?
- 为何要学习MFC?
- 使用MFC为何要调用CAcModuleResourceOverride
- 为何要学习C语言
- 为何要学习Java语言
- 为何要学习unreal engine4
- 为何mfc使用MAKEINTRESOURCE
- 为何要学习开源GIS
- 深层学习为何要“Deep”(上)
- 深层学习为何要“Deep”(上)
- 深层学习为何要“Deep”(下)
- 深层学习为何要“Deep”(上)
- 为何要学习游戏引擎底层技术
- 深层学习为何要“Deep”(上)
- 深度学习为何要“deep”下
- 深层学习为何要“Deep”(上)
- 深层学习为何要“Deep”(下)
- PLC学习之06---为何要关心响应时间
- 我们为什么要使用NodeJS
- POJ 2125 最小点权覆盖集(输出方案)
- UDP用打洞技术穿透NAT的原理与实现
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
- Oracle 学习笔记 查询(重点,也是基础)
- 为何要学习MFC?
- SQL Server 2008 R2评估期已过的解决办法
- 嵌入式 常见类型的打印参数设置
- scrapy抓取ajax请求的网页
- 互联网未来的十年
- LINUX下的用户访问授权,文件权限
- 死锁
- JS修改CKEDITOR的textarea内容
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式