龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

COM中的可连接对象与连接点机制及其MFC程序实现(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
2、编程实例 现在用MFC实现一个可连接对象,然后写一个极为简单的客户和时间接收器。 需要说明的是,MFC通过CCmdTarget类实现了IConnectionPointContainer和IEn

  2、编程实例

  现在用MFC实现一个可连接对象,然后写一个极为简单的客户和时间接收器。

  需要说明的是,MFC通过CCmdTarget类实现了IConnectionPointContainer和IEnumConnectionPoints接口,此外,通过CConnectionPoint类实现了IConnectionPoint接口

  1.可连接对象ConnObject

  在这个对象中,实现一个一般的COM接口IEventServer,客户可以使用此接口的方法DoSomething()作一些事情,但主要的是对象将在此处触发事件。SampleConnPoint实现连接点对象。

    (1)在GUIDs.h中写入:

// {EE888B01-EA9C-11d3-97B5-5254AB191930}

static const IID CLSID_ConnObject = //组件ID

{ 0xee888b01, 0xea9c, 0x11d3, { 0x97, 0xb5, 0x52, 0x54, 0xab, 0x19, 0x19, 0x30 } };

// {EE888B02-EA9C-11d3-97B5-5254AB191930}

static const IID IID_IEventServer = //一般的COM接口,客户使用此接口的方法

//DoSomething()

{ 0xee888b02, 0xea9c, 0x11d3, { 0x97, 0xb5, 0x52, 0x54, 0xab, 0x19, 0x19, 0x30 } };


//// {EE888B03-EA9C-11d3-97B5-5254AB191930}

static const IID IID_IEventSink = //连接点对象所实现的连接点接口ID

{ 0xee888b03, 0xea9c, 0x11d3, { 0x97, 0xb5, 0x52, 0x54, 0xab, 0x19, 0x19, 0x30 } };
 

  2. 在IConnObject.h中写入

#include "GUIDs.h"

//声明IEventServer接口

DECLARE_INTERFACE_(IEventServer,IUnknown)

{

STDMETHOD(DoSomething)()PURE;

};

//声明出接口,此出接口将由客户的事件接收器实现

DECLARE_INTERFACE_(IEventSink,IUnknown)

{

STDMETHOD(EventHandle)()PURE;

}; 

精彩图集

赞助商链接