WEB开发网
开发学院软件开发VC COM编程入门 :什么是COM,如何使用COM 阅读

COM编程入门 :什么是COM,如何使用COM

 2006-07-21 11:45:08 来源:WEB开发网   
核心提示: 创建一个新对象C++中,用new操作符,COM编程入门 :什么是COM,如何使用COM(4),或者在栈中创建对象,COM中,可以传递IID_IShellLink获得IShellLink接口指针,ppv接口指针的地址,调用COM库中的API,删除对象C++中

创建一个新对象

C++中,用new操作符,或者在栈中创建对象。

COM中,调用COM库中的API。

删除对象

C++中,用delete操作符,或将栈对象踢出。

COM中,所有的对象保持它们自己的引用计数。调用者必须通知对象什么时候用完这个对象。当引用计数为零时,COM对象将自己从内存中释放。

由此可见,对象处理的两个阶段:创建和销毁,缺一不可。当创建COM对象时要通知COM库使用哪一个接口。如果这个对象创建成功,COM库返回所请求接口的指针。然后通过这个指针调用方法,就像使用常规C++对象指针一样。

创建COM对象

为了创建COM对象并从这个对象获得接口,必须调用COM库的API函数,CoCreateInstance()。其原型如下:

HRESULT CoCreateInstance (
   REFCLSID rclsid,
   LPUNKNOWN pUnkOuter,
   DWORD   dwClsContext,
   REFIID  riid,
   LPVOID*  ppv );

以下是参数解释:

rclsid

coclass的CLSID,例如,可以传递CLSID_ShellLink创建一个COM对象来建立快捷方式。

pUnkOuter

这个参数只用于COM对象的聚合,利用它向现有的coclass添加新方法。参数值为null表示不使用聚合。

dwClsContext

表示所使用COM服务器的种类。本文使用的是最简单的COM服务器,一个进程内(in-process)DLL,所以传递的参数值为CLSCTX_INPROC_SERVER。注意这里不要随意使用CLSCTX_ALL(在ATL中,它是个缺省值),因为在没有安装DCOM的Windows95系统上会导致失败。

riid

请求接口的IID。例如,可以传递IID_IShellLink获得IShellLink接口指针。

ppv

接口指针的地址。COM库通过这个参数返回请求的接口。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:COM 编程 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接