从MFC与ATL的男女关系说起

我从大三开始学习MFC,对于一个学软件的学生来说算是有点晚,到现在差不多有3个年头了。我在大四进入公司实习开始学习COM,接触到ATL并用它来做开发。我在大二冬天开始恋爱,到现在为止第一段爱情走过3个半年头终于到了末路。这些对于我来说都算初尝,尝之有味所以写一点胡言乱语。

男女关系

如果从哲学的观点来看,这大概要说是一种辩证关系了!

首先谈谈男人。男人与男孩的区别在于责任,对于一个男人来说,他的肩膀永远有负担,他要解决生活中遇到的所有问题,可以为妻儿带来幸福生活,可以赡养父母,可以做一些成就来创一番事业。所以男人不要轻生,因为你垮下就意味着你的负担没有了支撑,也就是你不负责任。男人的这种责任体现了一种刚性,打不倒压不垮,坎坎坷坷一路走来即使没有扬名立万但是肩膀上的负担始终没有落下。铮铮铁骨、铁血男儿、阳刚之美都是对男人的赞美,一个家庭男人是顶梁柱,这就是责任。

再谈谈女人。女人与女孩的区别在于柔情,少了撒娇和任性,多了体贴和温柔。女人是生活的调剂品,少了她尽管可以填抱肚皮、补充营养但食之无味。女人天生就是善于交际的,这本身体现的就是一种柔性,就像太极一样,以柔克刚,借助刚性体现柔美。

用建筑来形容男女关系,男人就像钢筋水泥搭建起来的框架承受着外力,女人则是对框架填补装修使其美观,不同的男人有着不同的建筑风格,不同的女人可以使建筑呈现不同的美。成功的男人背后都有一个女人,钢筋水泥加上精心装饰让人体会到设计之美,至于谁重要次要,谁表谁里都不是关键,关键的是刚柔的结合。

MFC

MFC是一个男人,从Microsoft C/C++ version 7.0到Visual Stduio.net 2005一直承担着软件框架设计的角色,风风雨雨路不回头,屹立在软件设计大道,为开发者提供便利,著名的BCG库和XTREME库都是在MFC源码基础上的改进。它大而繁杂,曲折通幽,粗旷豪放。它必须承担责任,提供软件设计的一套解决方案,而且背负着历史包袱,所以难免带有一些成熟男人的深邃而不被人理解。如果你还一味的去批判它,那只能说你不懂男人的心,不理解一个男人难言之苦。 ATL

ATL是一个女人,小巧灵活讨人喜爱,它作为COM思想的实现而拿出来解决软件协作的问题。它可以不具体实现功能而只留出一些接口,接口两端相通并且随时拔插,多么完美一个女人!为一个C++对象配备一个ATL对象你可以想象有什么结果嘛?

软件设计中的MFC与ATL

以前我一直以为ATL就是做控件、构造插件接口体系的,而MFC就是用来做界面功能。它们属于不同体系,在功能级别上存在差异,所以只是在纵向上结合而没有尝试横向的结合。人类社会是自然的,软件社会也应该是自然的。自然代表一种随和,亲近,协调。

提到MFC,八九不离十就涉及到软件界面开发。目前来说软件复用需求越来越高,而软件功能的不确定因素越来越大,一个特定的界面行为可能不确定。MFC是一个男人,用它可以做任何想做的界面,这就是它的刚性。但是我们到底是要去做什么还是告诉别人我们可以做什么呢?如果我们一味的做,那我们充其量只是一个莽夫,是吕布有勇无谋。我告诉你我有一个MFC对象,还告诉你它可以做什么,这样不就够了。

MFC是男人天生缺乏沟通能力,所以无法告知外界它自身的行为,只有它自己知道。这时候就需要一个管子插到对象内部去了解它,而ATL刚好提供了一个接口,将其一段插入MFC对象内部而露出另一端以便告知外界MFC对象内部的行为。这样的界面是可解释的界面,它具有做事情的能力,但是它不去做,而成为可复用界面。

时间: 2024-10-26 16:30:41

从MFC与ATL的男女关系说起的相关文章

在MFC和ATL工程中使用动画GIF

CPictureEx 是一个为 MFC 程序使用的 C++ 类,对于一些需要使用JPEG 和 GIF 图像格式作为 banner 的应用程序可以借助这个类来实现.对于静态 banner 的显示使用 OleLoadPicture 函数和 IPicture 接口并不难实现,但处理带动画的 GIF实现方法则完全不同. 在网上查了很多相关资料,仅仅发现一个可以免费使用的资源--CodeGuru上一个由George Tersaakov 写的COM 对象.不幸的是,我用自己的 GIF 测试这个 COM 对象

STL,ATL,WTL之间的联系和区别

STL即 Standard Template Library (标准模板库)         STL是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来的.现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.        STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),几乎所有的代码都采用了模板

用ATL和MFC来创建ActiveX控件

摘要目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发.MFC代表了创建独立的Windows应用的一种简单.一致的方法:ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码.这两种框架在它们对于开发ActiveX的用途上会合了.我们将看看这两种框架是如何适用于创建ActiveX控件的--突出其优缺点,亲自经历创建一个控件的过程--以便你能够决定何时使用一种框架,何时使用另一种. 如果你希望用C++来写ActiveX控件,有两个流行的框架,一个是Micr

ATL VS MFC

  ATL vs. MFC In a way, ATL is to COM what MFC is to the Windows API. The goal of ATL is to provide a thin but effective wrapper around the most common COM interfaces without sacrificing component performance. Despite this similarity, however, the de

VC MFC专题

MFC程序如何实现给对话框添加背景图片 MFC游戏开发笔记十 游戏中的碰撞检测进阶:地图类型&障碍物 MFC游戏开发笔记九 游戏中的碰撞判定初步&怪物运动简单AI MFC游戏开发笔记八 游戏特效的实现(二):粒子系统 MFC游戏开发笔记七 游戏特效的实现(一):背景滚动 MFC游戏开发笔记六 图像双缓冲技术:实现一个流畅的动画 MFC游戏开发笔记五 定时器和简单动画 MFC游戏开发笔记四 键盘响应和鼠标响应:让人物动起来 MFC游戏开发笔记三 游戏贴图与透明特效的实现 MFC游戏开发笔记二

VC ATL专题

ATL的GUI程序设计(前言) ATL的GUI程序设计(2) ATL的GUI程序设计(1) ATL/COM简单工程 ATL COM和ADO VC++与MATLAB混合编程及其应用 MATLAB与VC++混合编程实现一维小波多尺度分解. 基于VC++中ATL创建ActiveX控件的探讨 精通VC与MATLAB联合编程<十>--综合举例二 精通VC与MATLAB联合编程<九>--综合举例一 精通VC与MATLAB联合编程(八) 精通VC与MATLAB联合编程(七) 精通VC与Matla

常见MFC UI界面库

Xtrme toolkit,BCGControlBar,SkinMagic,AppFace,Skin++,Uskin++,SYGUI,LibUIDK,GuiToolkit,GardenUI等等,除了后两种一个是开源,一个是免费的外,其余的都是收费的. The Ultimate Toolbox   http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx GuiToolkit(开源,mfc扩展框架,类似Visual Studio 2003风格)h

结合泛型与模板的STL.NET探索

模板 开始之前,先来看一个笑话,当问一个C++程序员怎样完成一个给定的任务时,他(她)可能会提供一打或更多的潜在解决方案列表,但又会极其详细地标出每种方案的问题之处,让你不知所措,难以选择.而Visual C++ 2005,通过C++/CLI语言联编,引入了泛型的概念,使C++程序员可进一步提高程序的开发效率.关于 .NET泛型与C++模板,尽管句法上很相似,但泛型与模板是以完全不同的方法实现的,它们之间没有任何的内置兼容性. 说到泛型与模板的差别,相信每个 .NET平台的C++程序员都会问这个

ActiveX技术综述(一)

1.1.ActiveX的定义 ActiveX是Microsoft提出的一组使用COM(ComponentObjectModel,部件对象模型)使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关.作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面.同时,ActiveX技术也被用于方便地创建普通的桌面应用程序. 1.2.ActiveX的内容 ActiveX既包含服务器端技术,也包含客户端技术.其主要内容是: *ActiveX控制(Acti