![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
COM技术
文章平均质量分 75
sibylle
认真做事 平凡做人
展开
-
COM技术1
我开始学习COM技术了,想想看有这样一种技术,让软件的开发充分组件化,向工厂装配那样,可以根据需要自由定制,这不是软件的工程初衷吗?COM技术让这一切变得可行,我仿佛回到童年时那个堆积木的年代,我有个构想,然后去搭,我可以换不同的门,不同的颜色,但是一切看来都还是我想要的房子。现在对COM的理解是,COM不是一门编程语言,而是一个标准,COM本身不提供实现,不过我们可以用C++很好的实现它,原创 2007-10-26 12:19:00 · 771 阅读 · 0 评论 -
COM技术2
第二章 接口 接口是《COM技术内幕》的第二章,接口对COM的意义不言而喻,要想实现软件设计的组件化,组件间的良好稳定的接口定义是首要条件.对DLL而言,接口就是它所输出的那些函数;C++类的接口则是该类的一个成员函数集.而COM的接口也包括了一些函数,但就本质来说,COM的接口是一个包含函数指针数组的内存结构.记住COM是个定义上的东西,我们用其他方法让COM的由定义变为实现,在C原创 2007-10-27 17:37:00 · 841 阅读 · 0 评论 -
COM技术3
这一章主要介绍QueryInterface函数,我觉得其中最重要的是了解程序的整体结构.即包含哪几个文件,每个文件有哪些类,每个类是做什么的.书中有个完整的例子.代码如下:#include iostream.h>#include objbase.h>//To Compile use:cl IUnknown.cpp UUID.libvoid trace(const char*原创 2007-10-30 16:11:00 · 1103 阅读 · 1 评论 -
COM技术4
第四章 引用计数 这章引出了一个控制权的问题,谁将控制组件的生存期,落到语言层面就是,谁将负责new和delete.在所有组件都要继承的IUnknown接口中AddRef和Release这两个成员负责了组件生命期的管理.从而可以去掉客户代码中的delete语句. 对客户而言,它并不知道COM组件的细节,以前觉得COM编程会给用户提供一个头文件,但现在看来不是如此,客户原创 2007-11-01 13:33:00 · 804 阅读 · 0 评论 -
COM技术5
在前面四章中,可以看到将客户和组件程序分开是大势所趋,我以前的思考是组件程序能编译成一份obj,然后客户端就直接用这个obj,而不再编译组件部分的程序.这样,就算组件部分程序有变化,只要替换掉obj再编译客户端的程序就可以了.所以我做了尝试,把组件和客户端的代码分开到独立的文件中.这其实还是属于静态链接的形式,因为决定程序用哪个组件提供的接口是在编译期间根据不同的obj来决定的,如原创 2007-12-06 10:30:00 · 1387 阅读 · 0 评论 -
COM技术6
这一章关注的细节问题,包括HRESULT,GUID,还有注册表和一些系统函数.先来看HRESULT,COM中鼓励函数返回的值都为HRESULT类型,这样可以方便的监控组件的行为.如果接口确实需要返回一个值,可以使用一个用于输出的行参.我想,这应该是基于返回值在COM中的重要性要大于通常的C和C++编程,COM编程由于把接口的实现者和使用者分开了,所以使用者在使用时必须要查询,而以查询的结果原创 2007-12-20 16:08:00 · 2192 阅读 · 0 评论 -
COM技术7
回忆一下COM技术5中我们创建组件的方法,客户以DLL的名称做为参数.装载此DLL并调用其中所输出的函数CreateInstance.这个函数可以建立一个组件的实例并给客户返回一个IUnknown接口的指针.但是组件对我们来说仍是不透明的,我们需要知道实现组件DLL的位置.但是COM组件实际上可以透明地在网络上(或本地)被重新分配位置,而不会影响本地客户程序.所以,由客户端来调用D原创 2008-01-16 15:51:00 · 1573 阅读 · 1 评论