這個類別提供方法的 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_ENTRY
將或 SINK_ENTRY_EX
巨集新增至您想要處理之每個物件上每個事件的事件接收對應。 使用 IDispEventImpl
做為複合控件的基類時,您可以呼叫 AtlAdviseSinkMap
來建立和中斷事件接收對應中所有專案之事件來源的連接。 在其他情況下,或針對更大的控件,呼叫 DispEventAdvise
以建立來源物件與基類之間的連接。 呼叫 DispEventUnadvise
以中斷連線。
您必須針對需要處理事件的每個物件衍生自 IDispEventImpl
(使用 唯一的值 nID
)。 您可以針對一個來源物件取消加入基類,然後針對不同的來源物件提供建議,但單一物件可以一次處理的來源物件數目上限會受限於基類數目 IDispEventImpl
。
IDispEventImpl
提供與 IDispEventSimpleImpl
相同的功能,不同之處在於它會從類型連結庫取得介面的類型資訊,而不是提供它做為結構的指標 _ATL_FUNC_INFO
。
IDispEventSimpleImpl
當您沒有描述事件介面的類型庫,或想要避免使用類型連結庫相關聯的額外負荷時使用 。
注意
IDispEventImpl
和 IDispEventSimpleImpl
提供自己的實 IUnknown::QueryInterface
作,讓每個 IDispEventImpl
和 IDispEventSimpleImpl
基類都能作為個別的 COM 身分識別,同時仍然允許直接存取主要 COM 物件中的類別成員。
ActiveX 事件接收的 CE ATL 實作僅支援類型 HRESULT
或 void
事件處理程式方法的傳回值;不支援任何其他傳回值,且其行為未定義。
如需詳細資訊,請參閱 支援 IDispEventImpl
。
繼承階層架構
_IDispEvent
_IDispEventLocator
IDispEventImpl
需求
標頭:atlcom.h
IDispEventImpl::GetFuncInfoFromId
找出指定分派標識子的函式索引。
HRESULT GetFuncInfoFromId(
const IID& iid,
DISPID dispidMember,
LCID lcid,
_ATL_FUNC_INFO& info);
參數
iid
[in]函式標識碼的參考。
dispidMember
[in]函式的分派標識碼。
lcid
[in]函式標識碼的地區設定內容。
info
[in]結構,指出如何呼叫函式。
傳回值
標準 HRESULT
值。
IDispEventImpl::GetIDsOfNames
將單一成員和一組選擇性的自變數名稱對應至對應的整數 DISPID
集合,以供後續呼叫 IDispatch::Invoke
使用。
STDMETHOD(GetIDsOfNames)(
REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgdispid);
備註
請參閱 IDispatch::GetIDsOfNames
Windows SDK。
IDispEventImpl::GetTypeInfo
擷取物件的類型資訊,可以用來取得介面的類型資訊。
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
IDispEventImpl::GetTypeInfoCount
擷取物件提供的類型資訊介面數目 (0 或 1)。
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
備註
請參閱 IDispatch::GetTypeInfoCount
Windows SDK。
IDispEventImpl::GetUserDefinedType
擷取使用者定義型別的基本類型。
VARTYPE GetUserDefinedType(
ITypeInfo* pTI,
HREFTYPE hrt);
參數
pTI
[in]包含使用者定義型別之介面的指標 ITypeInfo
。
hrt
[in]要擷取之型別描述的句柄。
傳回值
variant 的類型。
備註
請參閱 ITypeInfo::GetRefTypeInfo
。
IDispEventImpl::IDispEventImpl
建構函式。 儲存類別範本參數 plibid
、 pdiid
、 wMajor
和 wMinor
的值。
IDispEventImpl();
IDispEventImpl::_tihclass
此 typedef 是類別範本參數 tihclass
的實例。
typedef tihclass _tihclass;
備註
根據預設,類別為 CComTypeInfoHolder
。
CComTypeInfoHolder
會管理 類別的類型資訊。
另請參閱
_ATL_FUNC_INFO
結構
IDispatchImpl
類
IDispEventSimpleImpl
類
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
類別概觀