COM in plain C (1 简介)By Jeff Glatt

译自: http://www.codeproject.com/KB/COM/com_in_c1.aspx  
  • COM对象及其VTable
  • GUID
  • QueryInterface(), AddRef(), and Release()
  • IClassFactor 工厂对象
  • 打包到DLL
  • 我们自己的C++/C头文件
  • 定义文件(DEF文件)
  • 安装DLL,注册对象
  • C程序例子
  • C++程序例子
  • 修改代码
  • 下一篇文章

  简介

以前已经有很多介绍如何使用或者建立 COM/OLE/ActiveX 的例子了。这些例子通常使用微软基础类库 (MFC) NET, C#, WTL 或者 ATL 。这些框架对底层进行包装,得到一些代码模板(用以生成 COM )。它意图隐藏对程序员隐藏底层实现细节,所以我们通常不能能过其从中学到 COM 组件的知识。你所学到的只是如何使用 COM 之上的框架。
 
  如果你只是使用 C ,而不使用 MFC, WTL, .NET, ATL, C# ,甚至也不使用 C++ 来实现 COM ,这方面的例子很少。本系列文章将探讨如何在 C 语言中使用 COM ,而不使用任何框架。
 
对于 Win32 控件,如 Static, Edit, Listbox, Combobox 等等,你可以通过控件的句柄 ( 例如 HWND) ,并且传递消息 ( 通过 SendMessage) 给他,来操纵控件。同样,当控件想通知你或者传递数据的时候,它也会传递消息回来(如,把消息放进你的消息对列,你通过 GetMessage 函数取得)。
 
COM 控件的方式不像这样。它并不这样来回传递消息。 COM 对像传给你某种函数的指针,通过这些指针,你可以控制这些对像。例如, IE 对像会传回一个函数指针,你可以使用这个指针来装载和显示 Web 页面; Office 对像传递函数指针来加载文档。如果 COM 对象需要通知你某些事件,或者传递某些消息给你,那么你需要在你的程序中写一些函数,并且将这些指针提交给 COM 对象,以便 COM 对象在需要的时候进行调用。换句话说,你需要在你的程序里建立 COM 对象。为了做到这一点,你需要对 COM 对象有详细的了解。框架隐藏了实现细节,在本系列文章中我们将探讨这些细节。
 
总之,通过调用 COM 对象里的函数来操纵 COM 对象,并且 COM 对象调用你的程序中的函数来通知你,或者传递数据给你。这种方案就像调用动态库里的函数,并且动态库能调用你的 C 程序里的函数一样( CALLBACK 回调),不过你不需要使用 LoadLibrary() 或者 GetProcAddres() 得到函数指针,而使用操作系统函数得到对象的指针,然后使用这个对像得到函数指针。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值