Класс IDispEventImpl
Этот класс предоставляет реализации 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
Указатель на iiD события dispinterface, реализованный этим классом. Этот интерфейс должен быть определен в библиотеке типов, обозначаемой plibid, wMajor и wMinor.
plibid
Указатель на библиотеку типов, определяющую интерфейс диспетчера, на который указывает pdiid. Если &GUID_NULL, библиотека типов будет загружена из объекта, исходя из событий.
wMajor
Основной номер версии для библиотеки типов. Значение по умолчанию равно 0.
wMinor
Дополнительный номер версии для библиотеки типов. Значение по умолчанию равно 0.
tihclass
Класс, используемый для управления сведениями о типах для T. Значение по умолчанию — это класс типа CComTypeInfoHolder
. Однако этот параметр шаблона можно переопределить, предоставив класс типа, отличного от CComTypeInfoHolder
типа.
Участники
Общедоступные определения типов
Имя | Описание |
---|---|
IDispEventImpl::_tihclass | Класс, используемый для управления сведениями о типе. По умолчанию CComTypeInfoHolder . |
Открытые конструкторы
Имя | Описание |
---|---|
IDispEventImpl::IDispEventImpl | Конструктор. |
Открытые методы
Имя | Описание |
---|---|
IDispEventImpl::GetFuncInfoFromId | Находит индекс функции для указанного идентификатора диспетчера. |
IDispEventImpl::GetIDsOfNames | Сопоставляет один элемент и необязательный набор имен аргументов с соответствующим набором целых чисел DISPID. |
IDispEventImpl::GetTypeInfo | Извлекает сведения о типе для объекта. |
IDispEventImpl::GetTypeInfoCount | Извлекает количество интерфейсов сведений о типе. |
IDispEventImpl::GetUserDefinedType | Извлекает базовый тип определяемого пользователем типа. |
Замечания
IDispEventImpl
предоставляет способ реализации события dispinterface, не требуя предоставления кода реализации для каждого метода или события в этом интерфейсе. 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-объекте.
Реализация CE ATL приемников событий ActiveX поддерживает только возвращаемые значения типа 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 в пакете SDK для Windows.
IDispEventImpl::GetTypeInfo
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
Замечания
IDispEventImpl::GetTypeInfoCount
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
Замечания
См. раздел IDispatch::GetTypeInfoCount в пакете SDK для Windows.
IDispEventImpl::GetUserDefinedType
Извлекает базовый тип определяемого пользователем типа.
VARTYPE GetUserDefinedType(
ITypeInfo* pTI,
HREFTYPE hrt);
Параметры
pTI
[in] Указатель на интерфейс ITypeInfo , содержащий определяемый пользователем тип.
hrt
[in] Дескриптор описания типа, который необходимо извлечь.
Возвращаемое значение
Тип варианта.
Замечания
См. раздел ITypeInfo::GetRefTypeInfo.
IDispEventImpl::IDispEventImpl
Конструктор. Сохраняет значения параметров шаблона класса plibid, pdiid, wMajor и wMinor.
IDispEventImpl();
IDispEventImpl::tihclass
Этот типдифицируется как экземпляр параметра шаблона класса tihclass.
typedef tihclass _tihclass;
Замечания
По умолчанию класс имеет значение CComTypeInfoHolder
. CComTypeInfoHolder
управляет сведениями о типе для класса.
См. также
Структура _ATL_FUNC_INFO
Класс IDispatchImpl
Класс IDispEventSimpleImpl
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Общие сведения о классе