Класс IDispEventSimpleImpl
Этот класс предоставляет реализации методов без получения сведений IDispatch
о типе из библиотеки типов.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template <UINT nID, class T, const IID* pdiid>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
Параметры
nID
Уникальный идентификатор исходного объекта. Если IDispEventSimpleImpl
используется базовый класс для составного элемента управления, используйте идентификатор ресурса требуемого содержащегося элемента управления для этого параметра. В других случаях используйте произвольное положительное целое число.
T
Класс пользователя, производный от IDispEventSimpleImpl
.
pdiid
Указатель на iiD события dispinterface, реализованный этим классом.
Участники
Открытые методы
Имя | Описание |
---|---|
IDispEventSimpleImpl::Advise | Устанавливает подключение к источнику событий по умолчанию. |
IDispEventSimpleImpl::D ispEventAdvise | Устанавливает подключение к источнику событий. |
IDispEventSimpleImpl::D ispEventUnadvise | Прерывает подключение к источнику событий. |
IDispEventSimpleImpl::GetIDsOfNames | Возвращает E_NOTIMPL. |
IDispEventSimpleImpl::GetTypeInfo | Возвращает E_NOTIMPL. |
IDispEventSimpleImpl::GetTypeInfoCount | Возвращает E_NOTIMPL. |
IDispEventSimpleImpl::Invoke | Вызывает обработчики событий, перечисленные на карте приемника событий. |
IDispEventSimpleImpl::Unadvise | Прерывает подключение к источнику событий по умолчанию. |
Замечания
IDispEventSimpleImpl
предоставляет способ реализации события dispinterface, не требуя предоставления кода реализации для каждого метода или события в этом интерфейсе. IDispEventSimpleImpl
предоставляет реализации IDispatch
методов. Необходимо предоставить реализации только для интересующих вас событий.
IDispEventSimpleImpl
работает вместе с картой приемника событий в классе для маршрутизации событий в соответствующую функцию обработчика. Чтобы использовать этот класс, выполните указанные ниже действия.
Добавьте макрос SINK_ENTRY_INFO на карту приемника событий для каждого события в каждом объекте, который требуется обрабатывать.
Укажите сведения о типе для каждого события путем передачи указателя на _ATL_FUNC_INFO структуру в качестве параметра для каждой записи. На платформе
_ATL_FUNC_INFO.cc
x86 значение должно быть CC_CDECL с помощью метода вызова функции обратного вызова __stdcall.Вызовите DispEventAdvise , чтобы установить соединение между исходным объектом и базовым классом.
Для каждого объекта, для которого необходимо обрабатывать события, необходимо наследовать ( IDispEventSimpleImpl
используя уникальное значение для nID). Вы можете повторно использовать базовый класс, не указав один исходный объект, а затем советуя другому исходному объекту, но максимальное количество исходных объектов, которые могут обрабатываться одним объектом в один раз, ограничивается числом базовых IDispEventSimpleImpl
классов.
IDispEventSimplImpl
предоставляет те же функции, что и IDispEventImpl, за исключением того, что он не получает сведения о типе интерфейса из библиотеки типов. Мастера создают код только IDispEventImpl
на основе, но можно использовать IDispEventSimpleImpl
, добавив код вручную. Используйте IDispEventSimpleImpl
, если у вас нет библиотеки типов, описывающей интерфейс событий, или вы хотите избежать накладных расходов, связанных с использованием библиотеки типов.
Примечание.
IDispEventImpl
и IDispEventSimpleImpl
предоставьте собственную реализацию IUnknown::QueryInterface
включения каждого IDispEventImpl
или IDispEventSimpleImpl
базового класса в качестве отдельного com-удостоверения, сохраняя прямой доступ к членам класса в основном com-объекте.
Реализация CE ATL приемников событий ActiveX поддерживает только возвращаемые значения типа HRESULT или void из методов обработчика событий; любое другое возвращаемое значение не поддерживается, и его поведение не определено.
Дополнительные сведения см. в разделе "Поддержка IDispEventImpl".
Иерархия наследования
_IDispEvent
_IDispEventLocator
IDispEventSimpleImpl
Требования
Заголовок: atlcom.h
IDispEventSimpleImpl::Advise
Вызовите этот метод, чтобы установить соединение с источником событий, представленным pUnk.
HRESULT Advise(IUnknown* pUnk);
Параметры
панк
[in] Указатель на IUnknown
интерфейс исходного объекта события.
Возвращаемое значение
S_OK или любое значение HRESULT сбоя.
Замечания
После установки подключения события из pUnk будут перенаправлены обработчикам в классе по схеме приемника событий.
Примечание.
Если класс наследуется от нескольких IDispEventSimpleImpl
классов, необходимо отсовести вызовы к этому методу, уточнив вызов с определенным базовым классом, которым вы хотите.
Advise
устанавливает соединение с источником событий по умолчанию, он получает iiD источника событий по умолчанию объекта, определяемого AtlGetObjectSourceInterface.
IDispEventSimpleImpl::D ispEventAdvise
Вызовите этот метод, чтобы установить соединение с источником событий, представленным pUnk.
HRESULT DispEventAdvise(IUnknown* pUnk const IID* piid);
Параметры
панк
[in] Указатель на IUnknown
интерфейс исходного объекта события.
piid
Указатель на iiD исходного объекта события.
Возвращаемое значение
S_OK или любое значение HRESULT сбоя.
Замечания
Впоследствии события, запущенные из pUnk , будут перенаправлены в обработчики в классе по схеме приемника событий.
Примечание.
Если класс наследуется от нескольких IDispEventSimpleImpl
классов, необходимо отсовести вызовы к этому методу, уточнив вызов с определенным базовым классом, которым вы хотите.
DispEventAdvise
устанавливает подключение к источнику событий, указанному в pdiid
.
IDispEventSimpleImpl::D ispEventUnadvise
Прерывает подключение к источнику событий, представленному pUnk.
HRESULT DispEventUnadvise(IUnknown* pUnk const IID* piid);
Параметры
панк
[in] Указатель на IUnknown
интерфейс исходного объекта события.
piid
Указатель на iiD исходного объекта события.
Возвращаемое значение
S_OK или любое значение HRESULT сбоя.
Замечания
После разрыва подключения события больше не будут перенаправлены в функции обработчика, перечисленные на карте приемника событий.
Примечание.
Если класс наследуется от нескольких IDispEventSimpleImpl
классов, необходимо отсовести вызовы к этому методу, уточнив вызов с определенным базовым классом, которым вы хотите.
DispEventAdvise
прерывает соединение, которое было установлено с источником событий, указанным в pdiid
.
IDispEventSimpleImpl::GetIDsOfNames
Эта реализация IDispatch::GetIDsOfNames
возвращает E_NOTIMPL.
STDMETHOD(GetIDsOfNames)(
REFIID /* riid */,
LPOLESTR* /* rgszNames */,
UINT /* cNames */,
LCID /* lcid */,
DISPID* /* rgdispid */);
Замечания
См . раздел IDispatch::GetIDsOfNames в пакете SDK для Windows.
IDispEventSimpleImpl::GetTypeInfo
Эта реализация IDispatch::GetTypeInfo
возвращает E_NOTIMPL.
STDMETHOD(GetTypeInfo)(
UINT /* itinfo */,
LCID /* lcid */,
ITypeInfo** /* pptinfo */);
Замечания
См. раздел IDispatch::GetTypeInfo в пакете SDK для Windows.
IDispEventSimpleImpl::GetTypeInfoCount
Эта реализация IDispatch::GetTypeInfoCount
возвращает E_NOTIMPL.
STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);
Замечания
См. раздел IDispatch::GetTypeInfoCount в пакете SDK для Windows.
IDispEventSimpleImpl::Invoke
Эта реализация IDispatch::Invoke
вызывает обработчики событий, перечисленные на карте приемника событий.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID /* riid */,
LCID lcid,
WORD /* wFlags */,
DISPPARMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* /* pexcepinfo */,
UINT* /* puArgErr */);
Замечания
См . раздел IDispatch::Invoke.
IDispEventSimpleImpl::Unadvise
Прерывает подключение к источнику событий, представленному pUnk.
HRESULT Unadvise(IUnknown* pUnk);
Параметры
панк
[in] Указатель на IUnknown
интерфейс исходного объекта события.
Возвращаемое значение
S_OK или любое значение HRESULT сбоя.
Замечания
После разрыва подключения события больше не будут перенаправлены в функции обработчика, перечисленные на карте приемника событий.
Примечание.
Если класс наследуется от нескольких IDispEventSimpleImpl
классов, необходимо отсовести вызовы к этому методу, уточнив вызов с определенным базовым классом, которым вы хотите.
Unadvise
прерывает соединение, которое было установлено с источником событий по умолчанию, указанным в pdiid
.
Unavise
прерывает подключение к источнику событий по умолчанию, он получает iiD источника событий по умолчанию объекта, как определено AtlGetObjectSourceInterface.
См. также
Структура _ATL_FUNC_INFO
Класс IDispatchImpl
Класс IDispEventImpl
SINK_ENTRY_INFO
Общие сведения о классе