Поделиться через


Класс 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] Указатель на IID T.

plibid
[in] Указатель на LIBID библиотеки типов, содержащей сведения об интерфейсе. По умолчанию передается библиотека типов уровня сервера.

wMajor
[in] Основная версия библиотеки типов. По умолчанию значение равно 1.

wMinor
[in] Дополнительная версия библиотеки типов. По умолчанию значение равно 0.

tihclass
[in] Класс, используемый для управления сведениями о типах для T. По умолчанию значение равно CComTypeInfoHolder.

Участники

Открытые конструкторы

Имя Описание
IDispatchImpl::IDispatchImpl Конструктор. Вызывает AddRef защищенную переменную-член, которая управляет сведениями о типе для двойного интерфейса. Деструктор вызывает Release.

Открытые методы

Имя Описание
IDispatchImpl::GetIDsOfNames Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.
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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

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

Замечания

См . раздел IDispatch::GetIDsOfNames в пакете SDK для Windows.

IDispatchImpl::GetTypeInfo

Извлекает сведения о типе для двойного интерфейса.

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

Замечания

См. раздел IDispatch::GetTypeInfo в пакете SDK для Windows.

IDispatchImpl::GetTypeInfoCount

Определяет, доступны ли сведения о типе для двойного интерфейса.

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Замечания

См IDispatch::GetTypeInfoCount . в пакете SDK для Windows.

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);

Замечания

См . раздел IDispatch::Invoke в пакете SDK для Windows.

См. также

Общие сведения о классе