三、 MFC篇

  Windows API是面向过程的接口,因此对于当时的编程技术来说,它是完美无缺的。但是,随着人们逐渐使用C++进行Windows程序的开发,迫切需要建立与Windows API的面向对象包装的接口。1992年,微软将Windows API开发成为它的应用程序框架(AFX),后来该产品又演变成为目前的微软基础类库(MFC)产品。下图2展示了MFC的顶级类层次结构。

  
  图2.MFC的类层次结构。

  MFC为使用C++开发Windows GUI应用程序提供了一个十分全面的基础框架,它对以前的API进行了面向对象的科学包装,大大简化和加快了程序的开发。

  Win95推出后出现在Visual C++ 4中的新版本的MFC 4.0使这个框架达到辉煌时期,在4.2版本时达到鼎盛。

  MFC框架中引入了一种适应当时开发需求的典型的文档-视图机制,从而大大简化了程序开发。当然,要掌握这些框架结构绝非一日之功,其中还涉及到部分COM及大量的宏技术。也正由于这些方面,导致了业界对MFC的褒贬不一。但正如其它微软技术一样,这只能进一步促进微软继续改进这种技术。几十年的技术积累已经奠定了MFC的生存基础,即使Windows的Vista发布,MFC也不可能退出Windows的舞台。事实上,Vista之后的Visual Studio.NET仍将MFC作为一个重要的组成部分,在今年的Visual Studio.NET 2005中,MFC在C++中的位置依然如故。MFC的未来,应该不必担心,只要你深入考察.NET类库,你会发现,MFC的许多思想机制正悄然进入.NET。

  新版的Visual C++.NET中MFC已经支持.NET开发了,而且MFC与ATL的协作更趋于和谐。如今你可以在Visual C++.NET中综合应用MFC、ATL与.NET库三者来开发应用程序,从而进一步增强C++开发的威力。

  【补注】ATL框架与WTL框架

  ATL即“ActiveX模板库”。它不能单独工作,是设计与Visual C++ V4.2,V5.0,V6.0一起工作的。

  MFC和ATL都可以用来开发ActiveX控件。事实上,两者都支持各种开发向导和强有力的帮助类和模板,从而使控件的开发尽量简单。而且,这两种框架各有千秋。简言之,如果你相当熟悉MFC的各种机制而且是在创建庞大而成熟的图形应用程序本地控件或服务器控件,那么使用MFC书写控件时会有很大的优越性。

  然而,用MFC建立的控件在执行时要求相应的MFC DLL支持,相应地导致体积庞大。如果在控件的规模成问题时,则可以考虑 使用另一种方法-ATL活动模板库。

  在建立轻量级控件(几乎或根本没有用户界面要求的COM或DCOM服务器)时,ATL方法是MFC方法的替代方法。ATL在建立COM组件时使用了模板机制,这个框架对许多标准的COM接口提供了大量的模板。事实上,ATL根本不需要任何类型的运行时刻服务—由于以C++模板为基础,所以ATL对于外部库根本没有链接依赖性。因此,基于ATL的组件要比等价的基于MFC的控件占用的资源少。

  WTL框架,作为ATL的扩展,也是由ATL小组开发的,包含在微软于2000年1月发布的开发平台SDK包中,虽然微软没有正式支持。WTL通过提供一个用于编写Win32应用程序和控件的轻量级的框架、一些特殊的视图、GDI对象和实用的类来扩展ATL窗口类。WTL的目标是成为最好和最简单的实现基于Win32和ATL的应用程序、服务器和控件的方法。

转载于:https://www.cnblogs.com/netgarden/archive/2006/12/10/587826.html

微软软件开发技术二十年回顾(MFC篇)相关推荐

  1. 微软软件开发技术二十年回顾-COM、OLE、ActiveX及COM+篇

    微软的许多技术,如OLE.ActiveX.以及DirectX等都是基于COM技术而建立起来的.微软本身也大量地使用COM组件来定制他们的应用程序及操作系统.那么,什么是COM呢? 所谓COM即&quo ...

  2. 2021年度总结 | 葡萄城软件开发技术回顾(上)

    2021年度总结 | 葡萄城软件开发技术回顾(上) 随着冬奥会各项精彩比赛的进行,2022年的序幕逐渐被拉开. 这一年,云原生领域风起云涌,容器大规模应用,k8s可称为炙手可热的话题:这一年,大数据技 ...

  3. 2020年度总结 | 葡萄城软件开发技术回顾

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 2020年是不平凡的一年,虽然疫情为整个社会都带来了巨大的冲击,但IT技术人 ...

  4. 2021年度总结 | 葡萄城软件开发技术回顾(下)

    2021年度总结 | 葡萄城软件开发技术回顾(下) 在上节中,我们介绍了在过去一年中葡萄城在控件领域中的一些新探索,新尝试. (详细内容:https://www.cnblogs.com/powerto ...

  5. 软件开发技术顾问_成为成功的软件开发顾问的5个关键

    软件开发技术顾问 为什么我成为顾问 当我在2007年离开首席信息官(CIO)职位时,我想回到纯粹的软件开发领域. 软件开发工作(编程)是我的挚爱,在担任CIO几年后,我开始讨厌预算和更多预算以及捍卫预 ...

  6. 传道解惑 软件开发技术名词解密

    传道解惑 软件开发技术名词解密 序:去年为了总结自己所学习/接触过的技术,也顺便为初学者少走弯路指明一些方向,可惜后来诸事缠身未能继续,十分遗憾,现放到自己的BLOG上来鼓励自己将此继续下去. &qu ...

  7. 点评主流软件开发技术

    为什么80%的码农都做不了架构师?>>>    点评主流软件开发技术 http://soft.chinabyte.com/297/8698297.shtml ■ 河北秦皇岛 谷俭政 ...

  8. 微软一站式开发技术框架解决方案 年内展望

    微软一站式开发技术框架解决方案 (CodeFx) 自成立至今已有半年.在这半年里,我们完成了130个代码示例,主要覆盖了COM.数据访问.库加载.进程间通信.Office开发.WinForms等技术. ...

  9. CodeFx: 微软一站式开发技术框架解决方案 2009-7-30 新增sample code简介

    微软一站式开发技术框架解决方案 2009年7月30号更新: http://cfx.codeplex.com/Wiki/View.aspx?title=All-In-One%20Code%20Frame ...

  10. 强烈推荐——微软一站式开发技术框架 All-In-One Code Framework (CodeFx)

    如果您是第一次听说All-In-One Code Framework这个项目,请参阅主页上的相关介绍http://cfx.codeplex.com/,以及这两篇blog CodeFx:一站式微软开发技 ...

最新文章

  1. goaccess在定时任务中不执行的问题
  2. java设计模式概述
  3. 大竹中学2021高考成绩查询,四川大竹中学2021录取分数线
  4. JS常用的设计模式(7)—— 外观模式
  5. 过程计算机控制综合课程设计,自动化10本 12升《计算机控制综合课程设计》任务书...
  6. 【mysql分区分表】mysql 按时间分区 【partition】
  7. Servlet第四篇【request对象常用方法、应用】
  8. linux etc/init 与etc/init.d的区别
  9. 设计模式 -- 结构模式
  10. Java设计模式学习总结(13)——结构型模式之享元模式
  11. CCF CSP202006-1 线性分类器
  12. ophonesdn对首位优秀版主mobileguy的专访
  13. 螺杆式、离心式、活塞式冷水机组及品牌
  14. froala富文本编辑器的使用
  15. unreal 安卓打包出现 LogHttp: Warning: 000001D09B0C8F00: request failed, libcurl error 哇塞 真的是爆炸 不知道为啥巨慢
  16. 油罐清洗抽吸系统设计
  17. matlab DSB-AM与SSB-AM的调制与解调
  18. ueditor+实现word图片自动上传
  19. android lcd,国产安卓机:LCD屏幕,正式再见
  20. 2016年linux认证考试,2016年Linux认证考试复习要点辅导

热门文章

  1. SqlServer语句重命名数据库名称
  2. 1.android源码编译android-7.1.2_r39
  3. MySQL 使用utf8mb4代替utf8
  4. C语言 #和##的用法
  5. linux版Nacos安装、集群配置
  6. java 数组扩容_Java数组扩容算法及Java对它的应用
  7. Python 装饰器的八种写法
  8. 远驱240控制器调整参数_PID控制中三个参数的作用
  9. python优先级排序_Python 列表排序
  10. matlab仿真对电脑要求,计算机仿真技术matlab基本语法.ppt