browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

COM学习笔记(4)

Posted by on 2004 年 05 月 13 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

COM对象的创建

参数说明:
rclsid:对象的CLSID。
pUnkOuter:当聚合COM对象时使用,可以用来向既有的对象添加新方法。
dwClsContext:希望使用何种类型的COM服务器。对于进程内DLL,这个值为CLSCTX_INPROC_SERVER。警告:如果在没有安装DCOM的Windows 95系统上使用CLSCTX_ALL(ATL的默认值),那么函数会调用失败。
riid:希望返回的接口IID。
ppv:接口指针的地址,COM库会通过这个参数返回请求的接口。

这个函数调用之后,它将在注册表中查找CLSID,读取服务器的位置,并将服务器装入内存,最后创建一个所请求的对象实例。

返回值的测试可以使用SUCCEEDED宏来完成。

C++代码
  1. HRESULT CoCreateInstance (   
  2.     REFCLSID  rclsid,   
  3.     LPUNKNOWN pUnkOuter,   
  4.     DWORD     dwClsContext,   
  5.     REFIID    riid,   
  6.     LPVOID*   ppv );  

字符串的使用

在COM中使用的字符串为Unicode字符串。对于VC而言,可以使用以下方法完成字符串的ANSI转换:
1、调用API函数WideCharToMultiByte。
2、调用C Runtime函数wcstombs。
3、在MFC中,可以使用CString的构造函数或者它的复制操作符。
4、使用ATL的字符串转换宏。

订阅本站

没有评论

(Required)
(Required, will not be published)