三、 MFC篇
  Windows API是面向过程的接口,因此对于当时的编程技术来说,它是完美无缺的。但是,随着人们逐渐使用

b.com/">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的应用程序、服务器和控件的方法。

微软软件开发技术二十年回顾-MFC篇的更多相关文章

  1. 微软软件开发技术二十年回顾-API篇(转)

    二. API篇 随着Windows操作系统开始占据主导地位,开发Windows平台下的应用程序成为人们的需要.当然,这也为传统的DOS程序员提供了一种新的编程方法-一种不受设备限制并由事件驱动的编程方 ...

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

    本文摘自:http://www.job168.com/info/read_100394.html 微软的许多技术,如OLE.ActiveX.以及DirectX等都是基于COM技术而建立起来的.微软本身 ...

  3. 微软软件开发技术二十年回顾-Windows DNA篇

    五. Windows DNA篇 微软的Windows分布式因特网应用体系(简称Windows DNA)是微软创建新一代高适应性商业解 决方案的框架,它使公司能够充分地挖掘数字神经系统的优点.Windo ...

  4. 微软软件开发技术二十年回顾-.NET框架篇

    六. .NET框架篇 .NET是微软自从发布Windows 3.0以来最为激动人心的新技术,是微软战略上为下一个十年对服务器和桌面软件工程的第一步,是微软的一场世纪大豪赌.对于.NET,微软的定义是, ...

  5. fir.im Weekly - 2016 移动开发技术大回顾

    2016 年是移动技术发展迅速的一年,认认真真回顾这一年必不可少.@移动开发前线 的 这篇 2016移动开发技术巡礼 ,精心盘点了 2016 年 移动开发技术大事件,分为 iOS/Android平台篇 ...

  6. 粮草先行——Android折叠屏开发技术点番外篇之运行时变更处理原则

    上一篇文章中,我们有提到Activity在屏幕尺寸发生变更时的处理方式,总共有两种: 重启APP以适应屏幕改变: 手动处理数据,避免APP重启. 同样,这两种方式也同时适用于改变屏幕方向.更改系统语言 ...

  7. javac选项以递归方式编译给定目录下的所有Java文件 - IT屋-程序员软件开发技术分享社区

    http://www.it1352.com/539276.html #Linux $ find -name“* .java”> sources.txt $ javac @ sources.txt ...

  8. 快速全面了解QT软件界面开发技术

    快速全面了解QT软件界面开发技术     目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...

  9. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

随机推荐

  1. Selenium-Switch与SelectApi接口

    Switch 我们在UI自动化测试时,总会出现新建一个tab页面.弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了.需要用到Se ...

  2. Linux下配置 Keepalived(心跳检测部署)

    首先呢,我想先给大家简单介绍一下什么是keepalived: Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器 ...

  3. 并发编程之submit和execute区别

    前言 使用线程池难免会用到submit和execute,但是submit是有坑的,此处做个记录 1.submit坑 此处随便写一个方法,进入内部查看execute和submit /** * @Auth ...

  4. MySQL统计同比环比SQL

    大体思路: MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份.月份,然后通过left join关联时间字段去计算环比.同比公式即可 原始表结构: 求同比SQL ...

  5. 64位Linux编译C代码,crt1.o文件格式不对的问题

    今天在某台64位LInux下编译一个简单的hello world的C程序,报错: /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../crt1.o: cou ...

  6. 胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题

    摘要: 揭开 BASIC College 神秘面纱,蚂蚁金服首次揭秘人才培养机制. 导读:5 月 6 日,蚂蚁金服副 CTO 胡喜在 2019 年 QCon 上做了<蚂蚁金服十五年技术架构演进之 ...

  7. TCP/IP,UDP,HTTP,SOCKET之间的区别和关系

    TCP/IP TCP/IP代表传输控制协议/网际协议,指的是一系列协组.可分为四个层次:数据链路层.网络层.传输层和应用层. 在网络层:有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协 ...

  8. mysql数据库之存储引擎

    mysql存储引擎概述 什么是存储引擎?                                                               MYSQL中的数据用各不相同的技术 ...

  9. 唯一索引与非唯一索引区别(UNIQUE INDEX, NON-UNIQUE INDEX)

    索引是我们经常使用的一种数据库搜索优化手段.适当的业务操作场景使用适当的索引方案可以显著的提升系统整体性能和用户体验.在Oracle中,索引有包括很多类型.不同类型的索引适应不同的系统环境和访问场景. ...

  10. 微信授权登录-微信公众号和PC端网站

    https://blog.csdn.net/qq_34664239/article/details/79107529 一.微信公众号授权登录——微信公众平台 微信授权登录,并调用后台接口,获取用户信息 ...