码迷,mamicode.com
首页 > 其他好文 > 详细

COM的概念总结

时间:2015-03-02 22:18:22      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

1.COM是一种规范,和语言无关。只要语言支持COM规范就可以用来创建COM对象

 

2.COM的母语仍然是C++,因为COM使用的数据类型,在一些语言中很难表达,

所以一般来说用C++制作可重用模块,其他弱类型语言将模块集成到应用中。

 

3.自动化技术为高级语言调用COM模块提供了有效途径,ActiveX是自动化的超集

 

4.应用程序支持自动化,就意外着他们可以连接到其他自动化兼容的组件中

 

5.自动化客户是:操纵其他程序暴露的自动化的对象的程序

自动化组件(服务器):提供自动化对象的程序。

 

6.自动化组件分为进程内组件和进程外组件,ATL的PS工程就是为进程外组件准备的。

 

7.所谓自动化对象:就是实现了IDispatch接口的对象。自动化具有属性和方法两个特征。

 

COM三大接口:

1.IUnknown

IUnknown
        {
        public:
            BEGIN_INTERFACE
            virtual HRESULT STDMETHODCALLTYPE QueryInterface( 
                REFIID riid,
                void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
            
            virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;
            
            virtual ULONG STDMETHODCALLTYPE Release( void) = 0;
     
        };

2.IClassFactory

 1 IClassFactory : public IUnknown
 2     {
 3     public:
 4         virtual HRESULT STDMETHODCALLTYPE CreateInstance( 
 5             IUnknown *pUnkOuter,
 6             REFIID riid,
 7             void **ppvObject) = 0;
 8         
 9         virtual HRESULT STDMETHODCALLTYPE LockServer( 
10             BOOL fLock) = 0;
11         
12     };

3.IDispatch

 1 IDispatch : public IUnknown
 2     {
 3     public:
 4         virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount( 
 5             UINT *pctinfo) = 0;
 6         
 7         virtual HRESULT STDMETHODCALLTYPE GetTypeInfo( 
 8             UINT iTInfo,
 9             LCID lcid,
10             ITypeInfo **ppTInfo) = 0;
11         
12         virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames( 
13             REFIID riid,
14             LPOLESTR *rgszNames,
15             UINT cNames,
16             LCID lcid,
17             DISPID *rgDispId) = 0;
18         
19         virtual HRESULT STDMETHODCALLTYPE Invoke( 
20             DISPID dispIdMember,
21             REFIID riid,
22             LCID lcid,
23             WORD wFlags,
24             DISPPARAMS *pDispParams,
25             VARIANT *pVarResult,
26             EXCEPINFO *pExcepInfo,
27             UINT *puArgErr) = 0;
28         
29     };

详细信息请参考:http://blog.csdn.net/chenyujing1234/article/details/7753863

 

8.自动化对象使用的基本数据类型为VARIANT结构类型

 

COM的概念总结

标签:

原文地址:http://www.cnblogs.com/aoun/p/4309766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!