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

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

 2006-07-21 11:45:08 来源:WEB开发网   
核心提示: 当你调用CoCreateInstance()时,它负责在注册表中查找COM服务器的位置,COM编程入门 :什么是COM,如何使用COM(5),将服务器加载到内存,并创建你所请求的coclass实例,就应该在应用程序处于空闲期间调用CoFreeUnusedLibraries() API,这个

当你调用CoCreateInstance()时,它负责在注册表中查找COM服务器的位置,将服务器加载到内存,并创建你所请求的coclass实例。

以下是一个调用的例子,创建一个CLSID_ShellLink对象的实例并请求指向这个对象IShellLink接口指针。

HRESULT   hr;
IShellLink* pISL;
   hr = CoCreateInstance ( CLSID_ShellLink,     // coclass 的CLSID
               NULL,          // 不是用聚合
               CLSCTX_INPROC_SERVER,  // 服务器类型
               IID_IShellLink,     // 接口的IID
               (void**) &pISL );    // 指向接口的指针
   if ( SUCCEEDED ( hr ) )
     {
     // 用pISL调用方法
     }
   else
     {
     // 不能创建COM对象,hr 为出错代码
     }

首先声明一个接受CoCreateInstance()返回值的HRESULT和IShellLink指针。调用CoCreateInstance()来创建新的COM对象。如果hr接受到一个表示成功的代码,则SUCCEEDED宏返回TRUE,否则返回FALSE。FAILED是一个与SUCCEEDED对应的宏用来检查失败代码。

删除COM对象

前面说过,你不用释放COM对象,只要告诉它们你已经用完对象。IUnknown是每一个COM对象必须实现的接口,它有一个方法,Release()。调用这个方法通知COM对象你不再需要对象。一旦调用了这个方法之后,就不能再次使用这个接口,因为这个COM对象可能从此就从内存中消失了。

如果你的应用程序使用许多不同的COM对象,因此在用完某个接口后调用Release()就显得非常重要。如果你不释放接口,这个COM对象(包含代码的DLLs)将保留在内存中,这会增加不必要的开销。如果你的应用程序要长时间运行,就应该在应用程序处于空闲期间调用CoFreeUnusedLibraries() API。这个API将卸载任何没有明显引用的COM服务器,因此这也降低了应用程序使用的内存开销。

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

Tags:COM 编程 入门

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