event sink. You will receive notifications if you implement any event sink.
To ->aspnetwuxueyou(Postmortem) 能在具体点吗?最好有一些简单代码示例。
search DispSink in msdn 1. in header file class ATL_NO_VTABLE CDispCtl : public CComObjectRootEx<CComSingleThreadModel>, public IDispatchImpl<IDispCtl, &IID_IDispCtl, &LIBID_DISPCLIENTLib, /*wMajor =*/ 1, /*wMinor =*/ 0>, public CComControl<CDispCtl>, public IPersistStreamInitImpl<CDispCtl>, public IOleControlImpl<CDispCtl>, public IOleObjectImpl<CDispCtl>, public IOleInPlaceActiveObjectImpl<CDispCtl>, public IViewObjectExImpl<CDispCtl>, public IOleInPlaceObjectWindowlessImpl<CDispCtl>, public IPersistStorageImpl<CDispCtl>, public ISpecifyPropertyPagesImpl<CDispCtl>, public IQuickActivateImpl<CDispCtl>, public IDataObjectImpl<CDispCtl>, public IProvideClassInfo2Impl<&CLSID_DispCtl, NULL, &LIBID_DISPCLIENTLib>, public CComCoClass<CDispCtl, &CLSID_DispCtl>, public IDispEventImpl<1, CDispCtl, &DIID__IDispServEvents> { ...................................... //Map used to sink events. BEGIN_SINK_MAP(CDispCtl) SINK_ENTRY_EX(1, DIID__IDispServEvents, 1, OnTransmit) END_SINK_MAP() };2. in .cpp file STDMETHODIMP CDispCtl::OnTransmit(VARIANT data) { if(data.vt == VT_BSTR) { VariantClear(&m_OutText); VariantCopy(&m_OutText, &data); } FireViewChange(); return S_OK; } You will receive notification from interface whose IID is DIID__IDispServEvents
You will receive notifications if you implement any event sink.
能在具体点吗?最好有一些简单代码示例。
1. in header file
class ATL_NO_VTABLE CDispCtl :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IDispCtl, &IID_IDispCtl, &LIBID_DISPCLIENTLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public CComControl<CDispCtl>,
public IPersistStreamInitImpl<CDispCtl>,
public IOleControlImpl<CDispCtl>,
public IOleObjectImpl<CDispCtl>,
public IOleInPlaceActiveObjectImpl<CDispCtl>,
public IViewObjectExImpl<CDispCtl>,
public IOleInPlaceObjectWindowlessImpl<CDispCtl>,
public IPersistStorageImpl<CDispCtl>,
public ISpecifyPropertyPagesImpl<CDispCtl>,
public IQuickActivateImpl<CDispCtl>,
public IDataObjectImpl<CDispCtl>,
public IProvideClassInfo2Impl<&CLSID_DispCtl, NULL, &LIBID_DISPCLIENTLib>,
public CComCoClass<CDispCtl, &CLSID_DispCtl>,
public IDispEventImpl<1, CDispCtl, &DIID__IDispServEvents>
{
......................................
//Map used to sink events.
BEGIN_SINK_MAP(CDispCtl)
SINK_ENTRY_EX(1, DIID__IDispServEvents, 1, OnTransmit)
END_SINK_MAP()
};2. in .cpp file
STDMETHODIMP CDispCtl::OnTransmit(VARIANT data)
{
if(data.vt == VT_BSTR)
{
VariantClear(&m_OutText);
VariantCopy(&m_OutText, &data);
}
FireViewChange();
return S_OK;
}
You will receive notification from interface whose IID is DIID__IDispServEvents