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


Класс IDispatchImpl

Замечание

Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.

Предоставляет реализацию по умолчанию для 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.

См. также

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