共用方式為


IDispEventImpl 類別

這個類別提供方法的 IDispatch 實作。

重要

這個類別及其成員不能用於在 Windows 執行階段 中執行的應用程式。

語法

template <UINT nID, class T,
    const IID* pdiid = &IID_NULL,
    const GUID* plibid = &GUID_NULL,
    WORD wMajor = 0,
    WORD wMinor = 0,
    class tihclass = CcomTypeInfoHolder>
class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>

參數

nID
來源物件的唯一標識碼。 當 IDispEventImpl 是複合控件的基類時,請使用此參數所需自主控件的資源標識符。 在其他情況下,請使用任意正整數。

T
使用者類別,衍生自 IDispEventImpl

pdiid
這個類別所實作之事件 dispinterface 之 IID 的指標。 此介面必須在 plibid、wMajor 和 wMinor 所表示的類型連結庫中定義。

plibid
類型連結庫的指標,定義 pdiid 所指向的分派介面。 如果 &GUID_NULL,類型庫將會從來源事件的物件載入。

wMajor
類型程式庫的主要版本。 預設值為 0。

wMinor
類型程式庫的次要版本。 預設值為 0。

tihclass
用來管理 T 型別信息的類別。默認值是 類型的CComTypeInfoHolder類別;不過,您可以藉由提供 類型以外的CComTypeInfoHolder類別來覆寫此範本參數。

成員

公用 Typedefs

名稱 描述
IDispEventImpl::_tihclass 用來管理型別信息的類別。 根據預設, CComTypeInfoHolder為 。

公用建構函式

名稱 描述
IDispEventImpl::IDispEventImpl 建構函式。

公用方法

名稱 描述
IDispEventImpl::GetFuncInfoFromId 找出指定分派標識子的函式索引。
IDispEventImpl::GetIDsOfNames 將單一成員和一組選擇性的自變數名稱對應至對應的整數 DISPID 集合。
IDispEventImpl::GetTypeInfo 擷取 物件的型別資訊。
IDispEventImpl::GetTypeInfoCount 擷取類型資訊介面的數目。
IDispEventImpl::GetUserDefinedType 擷取使用者定義型別的基本類型。

備註

IDispEventImpl 提供實作事件散發介面的方式,而不需要您針對該介面上的每個方法/事件提供實作程序代碼。 IDispEventImpl 提供方法的 IDispatch 實作。 您只需要提供您想要處理之事件的實作。

IDispEventImpl 可與類別中的事件接收對應搭配運作,以將事件路由傳送至適當的處理程式函式。 若要使用此類別:

將SINK_ENTRYSINK_ENTRY_EX巨集新增至您要處理之每個物件上每個事件的事件接收對應。 使用 IDispEventImpl 做為複合控件的基類時,您可以呼叫 AtlAdviseSinkMap 來建立和中斷事件接收對應中所有專案的事件來源連線。 在其他情況下,或針對更大的控件,呼叫 DispEventAdvise 以建立來源物件與基類之間的連線。 呼叫 DispEventUnadvise 以中斷連線。

您必須針對需要處理事件的每個物件衍生自 IDispEventImpl (針對 nID 使用唯一值)。 您可以針對一個來源物件取消加入基類,然後針對不同的來源物件提供建議,但單一物件可以一次處理的來源物件數目上限會受限於基類數目 IDispEventImpl

IDispEventImpl提供與 IDispEventSimpleImpl 相同的功能,不同之處在於它會從類型連結庫取得介面的類型資訊,而不是將它當作_ATL_FUNC_INFO結構的指標提供。 IDispEventSimpleImpl當您沒有描述事件介面的類型庫,或想要避免使用類型連結庫相關聯的額外負荷時使用 。

注意

IDispEventImplIDispEventSimpleImpl 提供自己的實 IUnknown::QueryInterface 作,讓每個 IDispEventImplIDispEventSimpleImpl 基類都能作為個別的 COM 身分識別,同時仍然允許直接存取主要 COM 物件中的類別成員。

ActiveX 事件接收的 CE ATL 實作僅支援來自事件處理程式方法之 HRESULT 或 void 類型的傳回值;不支援任何其他傳回值,且其行為未定義。

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

繼承階層架構

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

IDispEventImpl

需求

標頭: atlcom.h

IDispEventImpl::GetFuncInfoFromId

找出指定分派標識子的函式索引。

HRESULT GetFuncInfoFromId(
    const IID& iid,
    DISPID dispidMember,
    LCID lcid,
    _ATL_FUNC_INFO& info);

參數

iid
[in]函式標識碼的參考。

dispidMember
[in]函式的分派標識碼。

lcid
[in]函式標識碼的地區設定內容。

資訊
[in]結構,指出如何呼叫函式。

傳回值

標準 HRESULT 值。

IDispEventImpl::GetIDsOfNames

將單一成員和一組選擇性的自變數名稱對應至對應的整數 DISPID 集合,這可用於 IDispatch::Invoke 的後續呼叫

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

備註

請參閱 Windows SDK 中的 IDispatch::GetIDsOfNames

IDispEventImpl::GetTypeInfo

擷取物件的類型資訊,可以用來取得介面的類型資訊。

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

備註

IDispEventImpl::GetTypeInfoCount

擷取物件提供的類型資訊介面數目 (0 或 1)。

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

備註

請參閱 Windows SDK 中的 IDispatch::GetTypeInfoCount

IDispEventImpl::GetUserDefinedType

擷取使用者定義型別的基本類型。

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

參數

pTI
[in]ITypeInfo 介面的指標,其中包含使用者定義型別。

hrt
[in]要擷取之型別描述的句柄。

傳回值

variant 的類型。

備註

請參閱 ITypeInfo::GetRefTypeInfo

IDispEventImpl::IDispEventImpl

建構函式。 儲存類別範本參數 plibid、pdiidwMajorwMinor 的值。

IDispEventImpl();

IDispEventImpl::tihclass

此 typedef 是類別範本參數 tihclass 的實例。

typedef tihclass _tihclass;

備註

根據預設,類別為 CComTypeInfoHolderCComTypeInfoHolder 會管理 類別的類型資訊。

另請參閱

_ATL_FUNC_INFO 結構
IDispatchImpl 類別
IDispEventSimpleImpl 類別
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
類別概觀