设为首页 加入收藏

TOP

使用纯粹的C++语言编写COM组件
2014-11-23 20:06:38 】 浏览:5822
Tags:使用 纯粹 语言 编写 COM 组件

  本文提供一个完全用C++实现的进程内(DLL)COM服务器,不要ATL或MFC提供任何支持。用这种方式编写COM对象可以让你深入地洞察到COM处理进程内服务器的方法以及COM是如何创建类工厂的。利用本文提供的这个简单框架你可以实现很基本的COM组件,如外壳扩展(Shell Extensions)等。


  以下是用本文所说的方式编写自己的COM对象要经过的步骤:


  第一步:写一个头文件,这个头文件包含以下内容:


  1、 包含文件comdef.h:#include


  2、 定义COM服务器的GUID。


  _declspec(selectany) GUID CLSID_Mine = { 0xdc186800,


  0x657f,


  0x11d4,


  {0xb0, 0xb5, 0x0, 0x50, 0xba, 0xbf, 0xc9, 0x4}


  };


  3、 给出接口的IID以及这个接口要实现的方法定义。到时客户端会用到这个接口的IID和接口的方法。


  interface __declspec(uuid("F614FB00-6702-11d4-B0B7-0050BABFC904")) ImyInterface : public IUnknown


  {


  STDMETHOD(Square)(long *pVal)PURE;


  STDMETHOD(Cube)(long *pVal)PURE;


  };


  客户端使用此接口:


  HRESULT hr;


  ImyInterface *pmine=(0);


  hr = CoCreateInstance(CLSID_Mine, // COM 服务器的CLSID


  NULL, //不支持聚合


  CLSCTX_INPROC_SERVER, // 是个DLL


  __uuidof(ImyInterface), // 接口的IID


  (void**)&pmine


  );


  还有一种方法可以从注册表中获得COM对象的CLSID,就是调用CLSIDFromProgId()函数,不过必须把组件的ProgId传递给这个函数。


  第二步:必须为所定义的接口提供实现,本文用的方法是创建一个从接口继承的新类:


  // 这个类实现单接口ImyInterface ...


  //


  //


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言变量赋初值 下一篇C语言中volatile关键字

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目