mfc、win32 程序的区别

从尽可能多的角度去描述。欢迎提出您的观点,不甚感激~_~!!!

基础概念:

Win32:包含好多基本的API;

MFC:里面包含好多类库,通过类库间接使用API;


经验之======================================================================

谈Win32:

①   有时候mfc是封装的类不能满足我们的要求,这时就需要我们自己用api来开发了。

②  win32windows下的最基本的编程方式,使用它得到的代码最干净最有效率,也是最底层,它是其它所有方式实现的基础。

③  WIN32 SDK还可以编写DLL。

 

谈MFC:

④  mfc是封装的类,最后还是会调用win32apiwin32api开发效率低一些,但比较自由。

⑤  不用mfc的人群往往是从DOS时代开始从事窗口编程的人,他们早在mfc出世之前就编得一手好程序。长期的编程过程中,每人,每个TEAM都拥有了自己的消息处理机制程序库或类库。当然有很多人认为他的类库比mfc使用方便。他开始为窗口编程的时候,mfcTEAM的很多人还在学校里读书呢。

⑥   MFC主要还是引入面向对象的开发思维。而不是过程驱动的模式。

⑦  另外,mfc的达人一定是sdk(win32)的达人。只会mfc而不懂sdk(win32)的程序员几乎没有。

⑧  在使用mfc的同时,还要重载/派生它,以满足我们的要求。如果不懂sdk(win32),就无法做到这一点。

⑨  MFC是对win32的封装,使用win32编程方法,写了一个又一个类,让我们不用再重复大量劳动。但毕竟是封装,所以不可能完全实现win32所有功能。用着虽然方便,但无法关注到更多的细节。

⑩   MFC只是一个类库,用该类库编写Windows图形界面的GUI程序比较容易,但其生成的EXE文件比较大。 

⑪     现在已经很少有人使用WIN32直接编写GUI程序,除非是在要求程序很小很简单的情况下,一般都用MFC,这样可以用相同的时间写出更好的GUI程序。

MFC是专注于用户界面的,而Windows SDK专注于UI, console,Windows服务,嵌入式,驱动多种类型的程序

 

谈MFC&win32比较:

①    MFC就是 微软给你包装了的库,提供了很多扩展功能,以及高级功能,方便你使用,而不是自己从头调用API来实现。而API由于是MFC下一层,自然实现更灵活,可以根据你的需要来使用,不会被MFC类库所限制

②   mfc开发的,我为什么要用win32api来开发呢,比如一些windows上运行的3d引擎,都是用win32 api开发的所以,当我们进行二次开发肯定是要用到win32 api。但是我觉得其他一些mis系统好像没有必要用api,因为用mfc就可以了,反正编译出来的exe都是可以运行的。

③   win32mfc编程的最大不同是win32是编程者自己把消息和响应函数联系在一起。
mfc是编程者采用微软为我们做好了MESSAGE-MAP机制,来处理消息。

④    MFC中对所有的句柄,对象,消息都进行了严格的检测,如果你不知道它的内部机制,随便调用函数很容易出错,而SDK提供的是一种宽松的开发环境,你可以用面向对象的思想定义自己的类,对界面控件进行封装。在一些专题开发项目,你可以不懂MFC,但是在一些常规的软件开发,你必须熟悉MFC,同时还要懂SDK.

⑤   二者相比,win32更本质,MFC更抽像。从软件工程来看,MFC更符合要求,更人性化。我们在正常使用中,优先使用MFC

经验之谈over======================================================================

 

知识扩展:

MFC是一套类库,适应范围窄,可以搞ERP软件,但效率不如其他语言高,而且类库并没有对DDK,openGL,D3D等专项领导的函数库进行封装。而Windows SDK提供了专题开发的平台。

有些场合下不要使用MFC
1.三维游戏等,这些东东
MFC并没有包含,这时需要使用其它库。使用MFC反而不好,会造成臃肿和拖累。
2.特殊程序,如病毒等后台工具。它们根本不需要什么界面,需要的就是效率,而且要求体积小。这些无疑
Win32比MFC强,甚至连win32都可以不用。
3.简单的实现,
win32上简陋的东西就够用了,或者就算不够用,但有STL等C++自带的,那么MFC就可以不需要了。win32更符合老编程员的习惯。而且如STL,同样功能下,事实上比MFC更优秀。

 

mfcd3d,opengl,ddk开发的弊端:
1.MFC
是一种封装类,是个宠然大物。当你使用d3d,opengl等它没有封装的进行开发时,使用它完全是种浪费,不需要它为何要挂上它呢?如编d3d时,它本身已经实现了几乎所有的需求,别再拖个油瓶。

2.MFC不仅是一种封装类,更是封装了一种MFC编程思想。它具有特有的文档视图结构和消息影射。我们在做普通程序时,会带来方便。但做d3d时,编程思想又回归win32,那样更直接和有效。这时MFC的编程思想和方式就不适合了。特别是DDK,那是跟底层打交道,要短小高效,跟MFC是两种不同的风格。
3.
事无绝对,选择合适的也就是最好的,如果你在进行D3D开发时,还要使用MFC的东西也是可以的。如果不是大量使用,可以把MFC中你需要的部分提取出单独使用。

 

这么多 一定晕了   告诉你,先了解win32 对学windows开始是很有帮助的,因为你必须要知道MFCATLWTL 的原理,这样你才能深入学习。如果你只想 复制粘贴外加搜索编码 那么你就不必问了,怎么学都行.
另外MFC、ATL、WTL 都有相同之处,根本没必要三个都学,或者说对学哪个好?很迷茫----没必要这样想,原理是一样的。如果非要 问 我推荐等次MFC-》ATL-》WTL,MFC并没有过期而且还有好多公司在用,而且存在的时间长,它的学习资料会很多,而WTL 处于初期。不过学ATL也很棒。

WIN32有两种执行程序,一种是控制台程序,另一种是Windows图形界面的GUI程序,即可以打开窗口并在窗口中画图显示文字的程序

因为MFC以前主要就是在win32环境中进行开发的,二者不是一个层面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值