COM中的可连接对象与连接点机制及其MFC程序实现(5)
3、客户事件接收器(Sink)
事件接收器也是COM对象,也可以用嵌套类来实现,但是它只是客户的一个内部对象,所以可以没有CLSID和类厂.下面示例是一个对话框程序,对话框有三个按钮:”连接”(IDC_CONNECT),”断开”(IDC_DISCONNECT),”事件”(IDC_EVENT).
1.创建一个基于对话框的工程:ConnClient.
2.在CConnClientDlg中首先加入#include “IConnObject.h”,然后在对话框类声明中声明事件接收器嵌套类:
BEGIN_INTERFACE_PART(EventSink,IEventSink)
STDMETHOD(EventHandle)();
END_INTERFACE_PART(EventSink)
同时声明几个私有变量:
private:
LPCONNECTIONPOINTCONTAINER pConnPtCont;//记录组件对象
//IConnectionPointContainer接口指针
LPCONNECTIONPOINT pConnPt;//记录连接点接口指针
DWORD m_dwCookie;//记录连接标识
IUnknown* m_pIUnknown;//用以记录组件对象IUnknown接口指针
3.实现事件接收器:
STDMETHODIMP_(ULONG)
CConnClientDlg::XEventSink::AddRef()
{
return 1;
}
STDMETHODIMP_(ULONG)
CConnClientDlg::XEventSink::Release()
{
return 0;
}
- 上一篇:在存储过程中调用外部的动态连接库
- 下一篇:在VC++6.0中用MFC进行COM编程