Поделиться через


Класс 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 , чтобы установить соединение между исходным объектом и базовым классом.

  • Вызов DispEventUnadvise для разрыва подключения.

Для каждого объекта, для которого необходимо обрабатывать события, необходимо наследовать ( 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
Общие сведения о классе