IDispEventSimpleImpl Class

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

這個類別提供的實作IDispatch方法,而不需要從類型程式庫取得型別資訊。

System_CAPS_ICON_important.jpg 重要

這個類別及其成員無法在 Windows 執行階段中執行的應用程式內使用。

template <UINT nID, class T, const IID* pdiid>  
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>

參數

nID
來源物件的唯一識別項。 當IDispEventSimpleImpl是基底類別對於複合控制項,內含的控制項所需的資源識別碼,將這個參數。 在其他情況下,使用任意的正整數值。

T
使用者的類別,衍生自IDispEventSimpleImpl

pdiid
這個類別所實作的事件分配介面的 IID 指標。

公用方法

名稱描述
IDispEventSimpleImpl::Advise建立與預設的事件來源的連接。
IDispEventSimpleImpl::DispEventAdvise建立事件來源的連接。
IDispEventSimpleImpl::DispEventUnadvise中斷與事件來源的連接。
IDispEventSimpleImpl::GetIDsOfNames傳回E_NOTIMPL
IDispEventSimpleImpl::GetTypeInfo傳回E_NOTIMPL
IDispEventSimpleImpl::GetTypeInfoCount傳回E_NOTIMPL
IDispEventSimpleImpl::Invoke呼叫事件處理常式列在事件接收對應。
IDispEventSimpleImpl::Unadvise中斷與預設事件來源的連接。

IDispEventSimpleImpl提供一種實作事件分配程式介面,而不需要您提供每個方法/事件介面的實作程式碼。 IDispEventSimpleImpl提供的實作IDispatch方法。 您只需要提供您所需處理事件的實作。

IDispEventSimpleImpl可搭配事件接收對應路由至適當的處理常式函式的事件類別中。 若要使用這個類別︰

  • 新增SINK_ENTRY_INFO巨集,以您想要處理每個物件上的每個事件的事件接收對應。

  • 藉由傳遞的指標,提供每個事件的型別資訊_ATL_FUNC_INFO結構做為參數,每個項目。 在 x86 平台,_ATL_FUNC_INFO.cc值必須是 CC_CDECL 以回呼函數呼叫 __stdcall 的方法。

  • 呼叫DispEventAdvise之間建立連線的來源物件和基底類別。

  • 呼叫DispEventUnadvise中斷連線。

您必須衍生自IDispEventSimpleImpl(使用的唯一值nID) 針對每個您要處理事件的物件。 可以對一個來源物件針對不同的來源物件,然後通知取消通知重複使用的基底類別,但可以一次處理單一物件的來源物件的數目上限受限於數目IDispEventSimpleImpl基底類別。

IDispEventSimplImpl提供相同的功能IDispEventImpl,但它不會從類型程式庫取得介面的型別資訊。 精靈產生程式碼只有在基礎IDispEventImpl,但是您可以使用IDispEventSimpleImpl以手動方式加入的程式碼。 使用IDispEventSimpleImpl當您沒有描述事件介面的型別程式庫或想要避免使用型別程式庫相關聯的額外負荷。

System_CAPS_ICON_note.jpg 注意

IDispEventImplIDispEventSimpleImpl提供自己的實作Iid啟用每個IDispEventImplIDispEventSimpleImpl基底類別做為個別的 COM 身分識別,同時仍允許對類別成員的直接存取主要的 COM 物件中。

CE ATL 實作 ActiveX 事件接收唯一支援的傳回值型別 HRESULT 或 void 從您的事件處理常式方法。任何傳回的值不受支援,且其行為未定義。

如需詳細資訊,請參閱支援 IDispEventImpl

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

標頭︰於 atlcom.h

呼叫這個方法來建立與所代表的事件來源的連接pUnk

HRESULT Advise(IUnknown* pUnk);

參數

pUnk
[in]指標IUnknown事件來源物件的介面。

傳回值

S_OK任何失敗或HRESULT值。

備註

一旦建立連線之後,從引發事件pUnk將會路由至您透過事件接收對應的類別中的處理常式。

System_CAPS_ICON_note.jpg 注意

如果您的類別衍生自多個IDispEventSimpleImpl類別,您必須明確執行呼叫此方法設定特定的基底類別呼叫您感興趣的範圍。

Advise建立的連線與預設的事件來源,它會取得物件所決定的預設事件來源的 IID AtlGetObjectSourceInterface

呼叫這個方法來建立與所代表的事件來源的連接pUnk

HRESULT DispEventAdvise(IUnknown* pUnk  const IID* piid);

參數

pUnk
[in]指標IUnknown事件來源物件的介面。

piid
IID 事件來源物件的指標。

傳回值

S_OK任何失敗或HRESULT值。

備註

接著,從引發事件pUnk將會路由至您透過事件接收對應的類別中的處理常式。

System_CAPS_ICON_note.jpg 注意

如果您的類別衍生自多個IDispEventSimpleImpl類別,您必須明確執行呼叫此方法設定特定的基底類別呼叫您感興趣的範圍。

DispEventAdvise建立連接中指定的事件來源與pdiid

與所代表的事件來源將會中斷連接pUnk

HRESULT DispEventUnadvise(IUnknown* pUnk  const IID* piid);

參數

pUnk
[in]指標IUnknown事件來源物件的介面。

piid
IID 事件來源物件的指標。

傳回值

S_OK任何失敗或HRESULT值。

備註

中斷連接之後,事件將不會再路由至事件接收對應所列出的處理常式函數。

System_CAPS_ICON_note.jpg 注意

如果您的類別衍生自多個IDispEventSimpleImpl類別,您必須明確執行呼叫此方法設定特定的基底類別呼叫您感興趣的範圍。

DispEventAdvise已建立與指定的事件來源的連接會中斷pdiid

這項實作的IDispatch::GetIDsOfNames傳回E_NOTIMPL

STDMETHOD(GetIDsOfNames)(
    REFIID /* riid */,
    LPOLESTR* /* rgszNames */,
    UINT /* cNames */,
    LCID /* lcid */,
    DISPID* /* rgdispid */);

備註

請參閱IDispatch::GetIDsOfNames中Windows SDK。

這項實作的IDispatch::GetTypeInfo傳回E_NOTIMPL

STDMETHOD(GetTypeInfo)(
    UINT /* itinfo */,
    LCID /* lcid */,
    ITypeInfo** /* pptinfo */);

備註

請參閱IDispatch::GetTypeInfo中Windows SDK。

這項實作的IDispatch::GetTypeInfoCount傳回E_NOTIMPL

STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);

備註

請參閱IDispatch::GetTypeInfoCount中Windows SDK。

這項實作的Excepinfo呼叫事件處理常式列出的事件接收對應。

STDMETHOD(Invoke)(
    DISPID dispidMember,
    REFIID /* riid */,
    LCID lcid,
    WORD /* wFlags */,
    DISPPARMS* pdispparams,
    VARIANT* pvarResult,
    EXCEPINFO* /* pexcepinfo */,
    UINT* /* puArgErr */);

備註

請參閱Excepinfo

與所代表的事件來源將會中斷連接pUnk

HRESULT Unadvise(IUnknown* pUnk);

參數

pUnk
[in]指標IUnknown事件來源物件的介面。

傳回值

S_OK任何失敗或HRESULT值。

備註

中斷連接之後,事件將不會再路由至事件接收對應所列出的處理常式函數。

System_CAPS_ICON_note.jpg 注意

如果您的類別衍生自多個IDispEventSimpleImpl類別,您必須明確執行呼叫此方法設定特定的基底類別呼叫您感興趣的範圍。

Unadvise中指定的預設事件來源與已建立的連線會中斷pdiid

Unavise與預設的事件來源的連線中斷,它會取得物件所決定的預設事件來源的 IID AtlGetObjectSourceInterface

_ATL_FUNC_INFO 結構
IDispatchImpl 類別
IDispEventImpl 類別
SINK_ENTRY_INFO
類別概觀

顯示: