ATL组件实现

For example:

1 class ATL_NO_VTABLE CMath :
2   public  CComObjectRootEx<CComSingleThreadModel>
3   public CComClass<CMath, &CLSID_Math>
4   public IMath,
5   public IAdvancedMath
6 {
7     ....
8 };

从CComObjectRootEx得到IUnknown支持,从CComCoClass得到类工厂支持,从IMath等获得方法特征

ATL_NO_VTABLE是为了压缩代码长度的一个尝试(推迟生成Vtable),实现类仍然是一个抽象类,实例化时才生成Vtable

ATL框架完全是为了性能着想,性能是压倒一切的因素

类工厂是为了支持外部创建

ATL组件实现

时间: 2024-08-10 23:30:50

ATL组件实现的相关文章

【转载】COM 组件设计与应用(五)——用 ATL 写第一个组件

原文:http://vckbase.com/index.php/wv/1215.html 一.前言 1.如果你在使用 vc5.0 及以前的版本,请你升级为 vc6.0 或 vc.net 2003: 2.如果你在使用 vc6.0 (ATL 3.0)请阅读本回内容: 3.如果你在使用 vc.net(ATL 7.0)请阅读下回内容:(当然读读本文内容也不错) 4.这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数: Add()完成

【转载】COM 组件设计与应用(六)——用 ATL 写第一个组件

原文:http://vckbase.com/index.php/wv/1216.html 一.前言 1.与 <COM 组件设计与应用(五)>的内容基本一致.但本回讲解的是在 vc.net 2003 下的使用方法,即使你不再使用vc6.0,也请和上一回的内容,参照比对. 2.这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数: Add()完成两个数值的加法,Cat()完成两个字符串的连接. 3.下面......好好听讲! 开

【转载】COM 组件设计与应用(十七)——持续性

原文:http://vckbase.com/index.php/wv/1264.html 一.前言 我们写程序,经常需要实现这样的需求: 例一.程序运行产生一个窗口,用户关闭的时候需要记录窗口的位置,以便下次运行时保持位置不变: 例二.由于程序运行时间很长,今天执行一部分,明天继续执行.那么在下次运行前要恢复前次的状态: ... ... ... ... 智慧的老师:以上这些需求,如何实现呢? 懵懂的学生:这个简单,只要在程序退出前提取必要的信息保存到文件中,下次运行时再从文件中读出来,设置一下就

【转载】COM 组件设计与应用(七)——编译、注册、调用

原文:http://vckbase.com/index.php/wv/1218.html 一.前言 上两回中,咱们用 ATL 写了第一个 COM 组件程序,这回中,主要介绍编译.册和调用方法.示例程序你已经下载了吗?如果还没有下载,vc6.0 的用户点,vc.net 的用户点这里. 二.关于编译 2-1 最小依赖 “最小依赖”,表示编译器会把 ATL 中必须使用的一些函数静态连接到目标程序中.这样目标文件尺寸会稍大,但独立性更强,安装方便:反之系统执行的时候需要有 ATL.DLL 文件的支持.如

C++ 类的动态组件化技术

序言: N年前,我们曾在软件开发上出现了这样的困惑,用VC开发COM组件过于复杂,用VB开发COM组件发现效率低,而且不能实现面向对象的很多特性,例如,继承,多态等.更况且如何快速封装利用历史遗留的大量C++代码本身就是一个大的难题. 当时,开发小组的成员通过共同努力,摸索了一套C++类的动态组件化技术,很好的解决了以上的问题,通过这个技术,我们继承了大量的C++代码,同时使这些C++程序以COM+组件的形式得以新生.通过这几年在实际应用中的考验,这个技术是成熟可靠的. 也许新的系统大多数都完全

优秀游戏程序员学习资料推荐

这两天给单位的技术做的一次学习材料推荐培训,直接ppt上拷过来的. 优秀游戏程序员学习资料推荐 主讲人:臧旭 前言 今天提到的纯粹是我个人心得和理解,可能片面,可能以偏概全. 目的是给大家做一定的指引作用,想让大家知道自己还有哪些可以去学习,还有哪些不足,我们距离优秀还有多远. 对我今天提到的东西,如果大家有时间,一定要去深入了解,在技术的道路上才有可能看得远.走得稳.飞得高. 另外有一句对所有技术人员想说的话: 学无止境.切忌坐井观天.有一点小小的成就就沾沾自喜.止足不前. 扎实的基础 万丈高

UINCODE字符串和安全字符串函数

字符集基础知识 在计算机中,字符都是以二进制编码方式存在于存储中 编码与解码 将字符输入计算机存储的过程类似于一个"编码"的过程 而将对应的"编码"显示出来的过程类似于一个解码的过程 二进制值本身代表什么含义是可以随意定义的,在内存中用某个2进制的值代表某一个值, 比如说用8位2进制的代表单字节这些,16位,32位等等 用某个二进制值表示某个字符完全是人为设定的,最终字符集就是字符到其二进制数字值得映射 单字节字符集(SBCS)  Single Byte Chara

Windows 7专业版安装VS2005与WinCE6.0开发环境

近期更新了自己的小黑从XP更新到WIN7专业版,我花了两天时间验证了下列软件安装在WIN7 PRO是完全兼容的. 1:2011年最新更新的SourceInsight3.50.0066版本,这个是支持WIN7 PRO [已经验证] 2:PADS9.2也是支持WIN7 PRO [已经验证] 3:Cadence16.2也是支持WIN7 PRO [已经验证] 4:Altium Designer v8 以后的版本都是支持WIN7 PRO [已经验证] 5:IAR EARM 6.3支持WIN7 PRO [已

C++和JavaScript脚本的相互调用

脚本调用C++相对比较容易,使用ATL组件只需要抛双接口即可,但在exe里如何做到呢?本文实现了在exe里脚本和C++的相互调用.在EXE里也需要对外抛送一个继承自IDispatch的接口.并需要重载它的所有接口.由于水平有限,所以难免有错. // 头文件 static const GUID IID_CExternal = { 0x52fee9af, 0xb3b3, 0x4756, { 0x80, 0x10, 0xfe, 0xa8, 0xf9, 0xfd, 0xd3, 0x3f } }; cla