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