TC官方合作论坛

 找回密码
 立即注册
查看: 5564|回复: 11

开发COM组件(C++)初探

[复制链接]
发表于 2013-1-14 18:33:30 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
       偶刚刚看各位大神门写的那些COM组件很好奇,于是乎决定研究下到底是啥东西!
偶于是找了些关于COM组件编程的理论基础资料!鉴于我学过点C++,对于类把握的还算可以!于是乎便稍微看懂了点!
在此 分享下我的学习心得,希望能对想学习COM组件编程的人有所帮助,鉴于本人水平有限,不对之处还请各位大神指教!!!

问题一:什么是COM组件?
      我想对于用过COM组件的人都知道,首先要在系统注册插件,然后创建一个插件的对象,然后各种像 TS.Ver() 之类的语句!而且可以在TC用,也可以在ANJIAN中用!跟编程语言没有关系!

     那么到底什么是COM组件?偶给出自己的理解!————所谓COM组件 是一堆或者说一坨具有某项功能小的二进制程序的 “盒子”,它可以为其他程序所调用!就先这么理解吧 ,但这不是定义!

      所谓 “盒子” 里面装的啥 只有制作插件的人知道!我们使用者不用关心里面是什么,因为插件的制作者,不会让你知道的,但是他们会给你列出那个“盒子”的物品清单,如果你想要某个清单上的 东西,不用你去自己 拿,操作系统会帮你从盒子里拿出二进制代码 让你用,这就是为什么要先注册插件 才能用的原因,因为如果操作系统连此盒子都不知道在什么地方,它怎么帮你去拿东西!

所以 注册以后 就是创建 插件的对象,创建插件对象 其实就是 列出盒子里的“物品”列表!
       你不用跟插件里面“东西”打交道,你只要看“单子”上有什么“物品” 就可以使用盒子里的功能了!所谓的 “清单”其实就是 COM插件的 接口 它是一个内存结构!
问题二:真实的COM组件是什么样子的?
         COM是啥?组件是啥?

         组件:打个比方吧,你要建起一个厨房,以前的方法是要用砖切一个灶台出来 然后放上锅子等等,现在的办法是你买个桌子 ,然后买个电磁炉,插上电就OK了!这个电磁炉 可以是美的的 也可以是海尔的等 。。 功能不一样,那么相对于 厨房,电磁炉就是一个组件。厨房就是一个应用程序,此应用程序的功能是做饭,但是这个电磁炉 如果换成新版的电磁炉也可以做饭,这就是组件在应用程序的作用!


         COM:是一种规范,是说明如何建立组件的规范!它与语言无关!此规范就像你的MP3可以播放MP3音频格式一样,MP3类型的文件也遵循一种叫MP3的规范。
         COM组件是:以WIN32动态链接库DLLs或者可执行文件EXEs的形式发布的可执行代码组成的!!!

COM组件的编写 不一定非要C++语言,其他语言也可以,比如C,JAVA等。都可以编写COM组件,只不过C++的编译器所编译出来的类的模型 刚好跟COM 接口的符合!在此我用C++做出解释!

C++语言必备知识:C++类,纯虚函数,类的继承,多重继承(此很重要)等。。如果不具备此知识 也没关系 我会用比喻做出解释!

问题三:什么是接口?
      神州飞船与空间站对接的时候,那个圈就是接口!对于COM组件来说,接口就是包含一个函数指针数组的内存结构!
      大家稍微了解了COM组件 ,那么对于使用过COM组件的人一定不会对 TS = com("ts.tssoft") 等不陌生!在我的理解,TC中的COM类型 其实就是接口(先这么理解吧!),就是实例化一个COM接口类,比如TS = com("ts.tssoft"),变量“TS”就是接口,他储存的是一个什么东西呢?就一个指向各种函数的地址的列表!
比如TS.Ver()就是调用函数列表中的 版本信息函数!
好了 今天先写到这里,没写过帖子,悲剧 写的很粗糙,请各位见谅!!另外问个问题,什么叫太监了?


回复

使用道具 举报

发表于 2013-1-14 22:13:50 | 显示全部楼层
不错哦,很形象
回复 支持 反对

使用道具 举报

发表于 2013-1-14 22:48:06 | 显示全部楼层
目测楼主要太监了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-15 15:38:32 | 显示全部楼层
回复 3楼ssaobo的帖子

什么叫要太监了?
回复 支持 反对

使用道具 举报

发表于 2013-1-20 12:59:28 | 显示全部楼层
回复 3楼ssaobo的帖子

什么叫要太监了?
zy6102 发表于 2013-1-15 15:38:3


太监的意思就是下面没有了...
回复 支持 反对

使用道具 举报

发表于 2013-1-21 22:41:19 | 显示全部楼层
太监了???
回复 支持 反对

使用道具 举报

发表于 2013-2-6 14:32:33 | 显示全部楼层
楼主,还是举一个简单的开发例子吧,用VC最简单的代码,让我们这些小白也学习一下
回复 支持 反对

使用道具 举报

发表于 2013-2-17 19:10:37 | 显示全部楼层
撸主,么么哒???
回复 支持 反对

使用道具 举报

发表于 2013-5-29 16:29:55 | 显示全部楼层
写得很不错哟
回复 支持 反对

使用道具 举报

发表于 2013-11-9 04:26:17 | 显示全部楼层
呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-7 04:49 , Processed in 0.048990 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表