共用方式為


IDispatchImpl 類別

提供雙重介面部分的預設實作 IDispatch

重要

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

語法

template<class T,
        const IID* piid= &__uuidof(T),
        const GUID* plibid = &CAtlModule::m_libid,
        WORD wMajor = 1,
        WORD wMinor = 0,
        class tihclass = CComTypeInfoHolder>
class ATL_NO_VTABLE IDispatchImpl : public T

參數

T
[in]雙重介面。

piid
[in]T IID 的 指標。

plibid
[in]類型程式庫的 LIBID 指標,其中包含介面的相關資訊。 根據預設,會傳遞伺服器層級型別程式庫。

wMajor
[in]類型程式庫的主要版本。 根據預設,值為 1。

wMinor
[in]類型程式庫的次要版本。 根據預設,值為 0。

tihclass
[in]用來管理 T 型別 資訊的類別。根據預設,值為 CComTypeInfoHolder

成員

公用建構函式

名稱 描述
IDispatchImpl::IDispatchImpl 建構函式。 呼叫 AddRef 受保護的成員變數,以管理雙重介面的類型資訊。 此解構函式會呼叫 Release

公用方法

名稱 描述
IDispatchImpl::GetIDsOfNames 將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。
IDispatchImpl::GetTypeInfo 擷取雙重介面的類型資訊。
IDispatchImpl::GetTypeInfoCount 判斷雙重介面是否有可用的類型資訊。
IDispatchImpl::Invoke 提供對雙重介面所公開之方法和屬性的存取。

備註

IDispatchImpl 提供 物件上任何雙重介面部分的預設實 IDispatch 作。 雙重介面衍生自 IDispatch ,且只使用與自動化相容的類型。 如同 dispinterface,雙重介面支援早期系結和晚期系結;不過,雙重介面也支援 vtable 系結。

下列範例示範 的一般實作 IDispatchImpl

class ATL_NO_VTABLE CBeeper :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CBeeper, &CLSID_Beeper>,
   public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>

根據預設,類別 IDispatchImpl 會在登錄中查閱 T 的類型資訊 。 若要實作未註冊的介面,您可以使用 IDispatchImpl 類別,而不需使用預先定義的版本號碼來存取登錄。 如果您建立的物件 IDispatchImpl 0xFFFF做為 wMajor 的值 ,並0xFFFF做為 wMinor 的值 ,類別 IDispatchImpl 會從 .dll 檔案擷取型別程式庫,而不是登錄。

IDispatchImpl 包含類型的靜態成員 CComTypeInfoHolder ,可管理雙重介面的類型資訊。 如果您有多個實作相同雙重介面的物件,則只會使用 一個 實例 CComTypeInfoHolder

繼承階層架構

T

IDispatchImpl

需求

標頭: atlcom.h

IDispatchImpl::GetIDsOfNames

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

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

備註

請參閱 Windows SDK 中的 IDispatch::GetIDsOfNames

IDispatchImpl::GetTypeInfo

擷取雙重介面的類型資訊。

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

備註

請參閱 Windows SDK 中的 IDispatch::GetTypeInfo

IDispatchImpl::GetTypeInfoCount

判斷雙重介面是否有可用的類型資訊。

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

備註

請參閱 IDispatch::GetTypeInfoCount Windows SDK。

IDispatchImpl::IDispatchImpl

建構函式。 呼叫 AddRef 受保護的成員變數,以管理雙重介面的類型資訊。 此解構函式會呼叫 Release

IDispatchImpl();

IDispatchImpl::Invoke

提供對雙重介面所公開之方法和屬性的存取。

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

備註

請參閱 Windows SDK 中的 IDispatch::Invoke

另請參閱

類別概觀