Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
Этот класс предоставляет реализации 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и wMajorwMinor.
IDispEventImpl();
IDispEventImpl::_tihclass
Этот типдф представляет собой экземпляр параметра tihclassшаблона класса.
typedef tihclass _tihclass;
Замечания
По умолчанию класс имеет значение CComTypeInfoHolder.
CComTypeInfoHolder управляет сведениями о типе для класса.
См. также
_ATL_FUNC_INFO Структура
IDispatchImpl Класс
IDispEventSimpleImpl Класс
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Общие сведения о классе