Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (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.