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


Класс IOleObjectImpl

Этот класс реализует IUnknown и является основным интерфейсом, с помощью которого контейнер взаимодействует с элементом управления.

Внимание

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

template<class T>
class ATL_NO_VTABLE IOleObjectImpl : public IOleObject

Параметры

T
Класс, производный от IOleObjectImpl.

Участники

Открытые методы

Имя Описание
IOleObjectImpl::Advise Устанавливает консультативное подключение к элементу управления.
IOleObjectImpl::Close Изменяет состояние элемента управления с запуска на загруженное.
IOleObjectImpl::D oVerb Указывает элементу управления выполнить одно из перечисленных действий.
IOleObjectImpl::D oVerbDiscardUndo Указывает элементу управления отменить любое состояние отмены, которое оно поддерживает.
IOleObjectImpl::DoVerbHide Указывает элементу управления удалить его пользовательский интерфейс из представления.
IOleObjectImpl::D oVerbInPlaceActivate Запускает элемент управления и устанавливает его окно, но не устанавливает пользовательский интерфейс элемента управления.
IOleObjectImpl::D oVerbOpen Вызывает открытие элемента управления в отдельном окне.
IOleObjectImpl::D oVerbPrimary Выполняет указанное действие, когда пользователь дважды щелкает элемент управления. Элемент управления определяет действие, обычно для активации элемента управления на месте.
IOleObjectImpl::D oVerbShow Отображает только что вставленный элемент управления пользователю.
IOleObjectImpl::D oVerbUIActivate Активирует элемент управления на месте и отображает пользовательский интерфейс элемента управления, например меню и панели инструментов.
IOleObjectImpl::EnumAdvise Перечисляет консультативные подключения элемента управления.
IOleObjectImpl::EnumVerbs Перечисляет действия для элемента управления.
IOleObjectImpl::GetClientSite Извлекает клиентский сайт элемента управления.
IOleObjectImpl::GetClipboardData Извлекает данные из буфера обмена. Реализация ATL возвращает E_NOTIMPL.
IOleObjectImpl::GetExtent Извлекает экстент области отображения элемента управления.
IOleObjectImpl::GetMiscStatus Извлекает состояние элемента управления.
IOleObjectImpl::GetMoniker Извлекает моникер элемента управления. Реализация ATL возвращает E_NOTIMPL.
IOleObjectImpl::GetUserClassID Извлекает идентификатор класса элемента управления.
IOleObjectImpl::GetUserType Извлекает имя пользователя элемента управления.
IOleObjectImpl::InitFromData Инициализирует элемент управления из выбранных данных. Реализация ATL возвращает E_NOTIMPL.
IOleObjectImpl::IsUpToDate Проверяет, обновлен ли элемент управления. Реализация ATL возвращает S_OK.
IOleObjectImpl::OnPostVerbDiscardUndo Вызывается DoVerbDiscardUndo после отмены состояния отмены.
IOleObjectImpl::OnPostVerbHide Вызывается DoVerbHide после скрытия элемента управления.
IOleObjectImpl::OnPostVerbInPlaceActivate Вызывается DoVerbInPlaceActivate после активации элемента управления.
IOleObjectImpl::OnPostVerbOpen Вызывается DoVerbOpen после открытия элемента управления для редактирования в отдельном окне.
IOleObjectImpl::OnPostVerbShow Вызывается DoVerbShow после того, как элемент управления был виден.
IOleObjectImpl::OnPostVerbUIActivate Вызывается DoVerbUIActivate после активации пользовательского интерфейса элемента управления.
IOleObjectImpl::OnPreVerbDiscardUndo Вызывается DoVerbDiscardUndo перед отменой состояния отмены.
IOleObjectImpl::OnPreVerbHide Вызывается DoVerbHide перед скрытием элемента управления.
IOleObjectImpl::OnPreVerbInPlaceActivate Вызывается DoVerbInPlaceActivate перед активацией элемента управления.
IOleObjectImpl::OnPreVerbOpen Вызывается DoVerbOpen перед открытием элемента управления для редактирования в отдельном окне.
IOleObjectImpl::OnPreVerbShow Вызывается DoVerbShow перед тем, как элемент управления был виден.
IOleObjectImpl::OnPreVerbUIActivate Вызывается DoVerbUIActivate перед активацией пользовательского интерфейса элемента управления.
IOleObjectImpl::SetClientSite Сообщает элементу управления о своем клиентском сайте в контейнере.
IOleObjectImpl::SetColorScheme Рекомендует цветовую схему приложению элемента управления, если таковые есть. Реализация ATL возвращает E_NOTIMPL.
IOleObjectImpl::SetExtent Задает степень области отображения элемента управления.
IOleObjectImpl::SetHostNames Указывает элементу управления имена приложения контейнера и документа контейнера.
IOleObjectImpl::SetMoniker Сообщает элементу управления, что его моникер. Реализация ATL возвращает E_NOTIMPL.
IOleObjectImpl::Unadvise Удаляет консультативное соединение с элементом управления.
IOleObjectImpl::Update Обновляет элемент управления. Реализация ATL возвращает S_OK.

Замечания

Интерфейс IOleObject — это основной интерфейс, через который контейнер взаимодействует с элементом управления. Класс IOleObjectImpl предоставляет реализацию этого интерфейса по умолчанию и реализует IUnknown путем отправки сведений на устройство дампа в отладочных сборках.

Руководство по созданию проекта ATL в статьях ATL

Иерархия наследования

IOleObject

IOleObjectImpl

Требования

Header: atlctl.h

IOleObjectImpl::Advise

Устанавливает консультативное подключение к элементу управления.

STDMETHOD(Advise)(
    IAdviseSink* pAdvSink,
    DWORD* pdwConnection);

Замечания

См. раздел IOleObject::Advise в пакете SDK для Windows.

IOleObjectImpl::Close

Изменяет состояние элемента управления с запуска на загруженное.

STDMETHOD(Close)(DWORD dwSaveOption);

Замечания

Деактивирует элемент управления и уничтожает окно управления, если оно существует. Если элемент данных класса управления CComControlBase::m_bRequiresSave имеет значение TRUE, а параметр dwSaveOption — OLECLOSE_SAVEIFDIRTY или OLECLOSE_PROMPTSAVE, свойства элемента управления сохраняются перед закрытием.

Указатели, хранящиеся в членах данных класса управления CComControlBase::m_spInPlaceSite и CComControlBase::m_spAdviseSink, и члены данных CComControlBase::m_bNegotiatedWnd, CComControlBase::m_bWndless и CComControlBase::m_bInPlaceSiteEx имеют значение FALSE.

См . раздел IOleObject::Close в пакете SDK для Windows.

IOleObjectImpl::D oVerb

Указывает элементу управления выполнить одно из перечисленных действий.

STDMETHOD(DoVerb)(
    LONG iVerb,
    LPMSG /* pMsg */,
    IOleClientSite* pActiveSite,
    LONG /* lindex */,
    HWND hwndParent,
    LPCRECT lprcPosRect);

Замечания

В зависимости от значения iVerbодин из вспомогательных функций ATL DoVerb вызывается следующим образом:

Значение iVerb Вызываемая вспомогательная функция DoVerb
OLEIVERB_DISCARDUNDOSTATE DoVerbDiscardUndo
OLEIVERB_HIDE DoVerbHide
OLEIVERB_INPLACEACTIVATE DoVerbInPlaceActivate
OLEIVERB_OPEN DoVerbOpen
OLEIVERB_PRIMARY DoVerbPrimary
OLEIVERB_PROPERTIES CComControlBase::DoVerbProperties
OLEIVERB_SHOW DoVerbShow
OLEIVERB_UIACTIVATE DoVerbUIActivate

См . раздел IOleObject::D oVerb в пакете SDK для Windows.

IOleObjectImpl::D oVerbDiscardUndo

Указывает элементу управления отменить любое состояние отмены, которое оно поддерживает.

HRESULT DoVerbDiscardUndo(LPCRECT /* prcPosRect */, HWND /* hwndParent */);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления.

Возвращаемое значение

Возвращает S_OK.

IOleObjectImpl::DoVerbHide

Деактивирует и удаляет пользовательский интерфейс элемента управления и скрывает элемент управления.

HRESULT DoVerbHide(LPCRECT /* prcPosRect */, HWND /* hwndParent */);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления. Не используется в реализации ATL.

Возвращаемое значение

Возвращает S_OK.

IOleObjectImpl::D oVerbInPlaceActivate

Запускает элемент управления и устанавливает его окно, но не устанавливает пользовательский интерфейс элемента управления.

HRESULT DoVerbInPlaceActivate(LPCRECT prcPosRect, HWND /* hwndParent */);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления. Не используется в реализации ATL.

Возвращаемое значение

Одно из стандартных значений HRESULT.

Замечания

Активирует элемент управления, вызвав CComControlBase::InPlaceActivate. Если элемент m_bWindowOnly данных класса элемента управления не имеет значения TRUE, DoVerbInPlaceActivate сначала пытается активировать элемент управления как элемент управления без окна (возможно, только если контейнер поддерживает IOleInPlaceSiteWindowless). Если это не удается, функция пытается активировать элемент управления с расширенными функциями (возможно, только если контейнер поддерживает IOleInPlaceSiteEx). Если это не удается, функция пытается активировать элемент управления без расширенных функций (возможно, только если контейнер поддерживает IOleInPlaceSite). Если активация выполнена успешно, функция уведомляет контейнер, который был активирован.

IOleObjectImpl::D oVerbOpen

Вызывает открытие элемента управления в отдельном окне.

HRESULT DoVerbOpen(LPCRECT /* prcPosRect */, HWND /* hwndParent */);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления.

Возвращаемое значение

Возвращает S_OK.

IOleObjectImpl::D oVerbPrimary

Определяет действие, выполняемое при двойном щелчке элемента управления.

HRESULT DoVerbPrimary(LPCRECT prcPosRect, HWND hwndParent);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления.

Возвращаемое значение

Одно из стандартных значений HRESULT.

Замечания

По умолчанию задайте для отображения страниц свойств. Это можно переопределить в классе элемента управления, чтобы вызвать другое поведение при двойном щелчке мыши; например, воспроизвести видео или перейти на месте.

IOleObjectImpl::D oVerbShow

Сообщает контейнеру, чтобы сделать элемент управления видимым.

HRESULT DoVerbShow(LPCRECT prcPosRect, HWND /* hwndParent */);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления. Не используется в реализации ATL.

Возвращаемое значение

Одно из стандартных значений HRESULT.

IOleObjectImpl::D oVerbUIActivate

Активирует пользовательский интерфейс элемента управления и уведомляет контейнер о том, что его меню заменяются составными менюми.

HRESULT DoVerbUIActivate(LPCRECT prcPosRect, HWND /* hwndParent */);

Параметры

prcPosRec
[in] Указатель на прямоугольник контейнера хочет, чтобы элемент управления был нарисован.

hwndParent
[in] Дескриптор окна, содержащего элемент управления. Не используется в реализации ATL.

Возвращаемое значение

Одно из стандартных значений HRESULT.

IOleObjectImpl::EnumAdvise

Предоставляет перечисление зарегистрированных консультативных подключений для этого элемента управления.

STDMETHOD(EnumAdvise)(IEnumSTATDATA** ppenumAdvise);

Замечания

См . раздел IOleObject::EnumAdvise в пакете SDK для Windows.

IOleObjectImpl::EnumVerbs

Предоставляет перечисление зарегистрированных действий (команд) для этого элемента управления путем вызова OleRegEnumVerbs.

STDMETHOD(EnumVerbs)(IEnumOLEVERB** ppEnumOleVerb);

Замечания

Вы можете добавить команды в файл rgs проекта. Например, см. статью CIRCCTL. RGS в примере CIRC .

См . раздел IOleObject::EnumVerbs в пакете SDK для Windows.

IOleObjectImpl::GetClientSite

Помещает указатель в элемент данных класса управления CComControlBase::m_spClientSite в ppClientSite и увеличивает число ссылок на указатель.

STDMETHOD(GetClientSite)(IOleClientSite** ppClientSite);

Замечания

См . раздел IOleObject::GetClientSite в пакете SDK для Windows.

IOleObjectImpl::GetClipboardData

Извлекает данные из буфера обмена.

STDMETHOD(GetClipboardData)(
    DWORD /* dwReserved */,
    IDataObject** /* ppDataObject */);

Возвращаемое значение

Возвращает E_NOTIMPL.

Замечания

См . раздел IOleObject::GetClipboardData в пакете SDK для Windows.

IOleObjectImpl::GetExtent

Извлекает размер отображения элемента управления с выполнением в единицах HIMETRIC (0,01 миллиметра на единицу).

STDMETHOD(GetExtent)(
    DWORD dwDrawAspect,
    SIZEL* psizel);

Замечания

Размер хранится в элементе данных класса управления CComControlBase::m_sizeExtent.

См . раздел IOleObject::GetExtent в пакете SDK для Windows.

IOleObjectImpl::GetMiscStatus

Возвращает указатель на зарегистрированные сведения о состоянии элемента управления путем вызова OleRegGetMiscStatus.

STDMETHOD(GetMiscStatus)(
    DWORD dwAspect,
    DWORD* pdwStatus);

Замечания

Сведения о состоянии включают в себя поведение, поддерживаеме данными элемента управления и презентации. Вы можете добавить сведения о состоянии в файл rgs проекта.

См. раздел IOleObject::GetMiscStatus в пакете SDK для Windows.

IOleObjectImpl::GetMoniker

Извлекает моникер элемента управления.

STDMETHOD(GetMoniker)(
    DWORD /* dwAssign */,
    DWORD /* dwWhichMoniker */,
    IMoniker** /* ppmk */);

Возвращаемое значение

Возвращает E_NOTIMPL.

Замечания

См . раздел IOleObject::GetMoniker в пакете SDK для Windows.

IOleObjectImpl::GetUserClassID

Возвращает идентификатор класса элемента управления.

STDMETHOD(GetUserClassID)(CLSID* pClsid);

Замечания

См . раздел IOleObject::GetUserClassID в пакете SDK для Windows.

IOleObjectImpl::GetUserType

Возвращает имя типа пользователя элемента управления путем вызова OleRegGetUserType.

STDMETHOD(GetUserType)(
    DWORD dwFormOfType,
    LPOLESTR* pszUserType);

Замечания

Имя типа пользователя используется для отображения в элементах пользовательского интерфейса, таких как меню и диалоговые окна. Имя типа пользователя можно изменить в файле rgs проекта.

См . раздел IOleObject::GetUserType в пакете SDK для Windows.

IOleObjectImpl::InitFromData

Инициализирует элемент управления из выбранных данных.

STDMETHOD(InitFromData)(
    IDataObject* /* pDataObject */,
    BOOL /* fCreation */,
    DWORD /* dwReserved */);

Возвращаемое значение

Возвращает E_NOTIMPL.

Замечания

См . раздел IOleObject::InitFromData в пакете SDK для Windows.

IOleObjectImpl::IsUpToDate

Проверяет, обновлен ли элемент управления.

STDMETHOD(IsUpToDate)(void);

Возвращаемое значение

Возвращает S_OK.

Замечания

См . раздел IOleObject::IsUpToDate в пакете SDK для Windows.

IOleObjectImpl::OnPostVerbDiscardUndo

Вызывается DoVerbDiscardUndo после отмены состояния отмены.

HRESULT OnPostVerbDiscardUndo();

Возвращаемое значение

Возвращает S_OK.

Замечания

Переопределите этот метод кодом, который требуется выполнить после отмены состояния отмены.

IOleObjectImpl::OnPostVerbHide

Вызывается DoVerbHide после скрытия элемента управления.

HRESULT OnPostVerbHide();

Возвращаемое значение

Возвращает S_OK.

Замечания

Переопределите этот метод кодом, который требуется выполнить после скрытия элемента управления.

IOleObjectImpl::OnPostVerbInPlaceActivate

Вызывается DoVerbInPlaceActivate после активации элемента управления.

HRESULT OnPostVerbInPlaceActivate();

Возвращаемое значение

Возвращает S_OK.

Замечания

Переопределите этот метод кодом, который требуется выполнить после активации элемента управления.

IOleObjectImpl::OnPostVerbOpen

Вызывается DoVerbOpen после открытия элемента управления для редактирования в отдельном окне.

HRESULT OnPostVerbOpen();

Возвращаемое значение

Возвращает S_OK.

Замечания

Переопределите этот метод кодом, который требуется выполнить после открытия элемента управления для редактирования в отдельном окне.

IOleObjectImpl::OnPostVerbShow

Вызывается DoVerbShow после того, как элемент управления был виден.

HRESULT OnPostVerbShow();

Возвращаемое значение

Возвращает S_OK.

Замечания

Переопределите этот метод кодом, который требуется выполнить после того, как элемент управления был виден.

IOleObjectImpl::OnPostVerbUIActivate

Вызывается DoVerbUIActivate после активации пользовательского интерфейса элемента управления.

HRESULT OnPostVerbUIActivate();

Возвращаемое значение

Возвращает S_OK.

Замечания

Переопределите этот метод кодом, который требуется выполнить после активации пользовательского интерфейса элемента управления.

IOleObjectImpl::OnPreVerbDiscardUndo

Вызывается DoVerbDiscardUndo перед отменой состояния отмены.

HRESULT OnPreVerbDiscardUndo();

Возвращаемое значение

Возвращает S_OK.

Замечания

Чтобы предотвратить отмену состояния отмены, переопределите этот метод, чтобы вернуть ошибку HRESULT.

IOleObjectImpl::OnPreVerbHide

Вызывается DoVerbHide перед скрытием элемента управления.

HRESULT OnPreVerbHide();

Возвращаемое значение

Возвращает S_OK.

Замечания

Чтобы предотвратить скрытие элемента управления, переопределите этот метод, чтобы вернуть ошибку HRESULT.

IOleObjectImpl::OnPreVerbInPlaceActivate

Вызывается DoVerbInPlaceActivate перед активацией элемента управления.

HRESULT OnPreVerbInPlaceActivate();

Возвращаемое значение

Возвращает S_OK.

Замечания

Чтобы предотвратить активацию элемента управления, переопределите этот метод, чтобы вернуть ошибку HRESULT.

IOleObjectImpl::OnPreVerbOpen

Вызывается DoVerbOpen перед открытием элемента управления для редактирования в отдельном окне.

HRESULT OnPreVerbOpen();

Возвращаемое значение

Возвращает S_OK.

Замечания

Чтобы предотвратить открытие элемента управления для редактирования в отдельном окне, переопределите этот метод, чтобы вернуть ошибку HRESULT.

IOleObjectImpl::OnPreVerbShow

Вызывается DoVerbShow перед тем, как элемент управления был виден.

HRESULT OnPreVerbShow();

Возвращаемое значение

Возвращает S_OK.

Замечания

Чтобы предотвратить появление элемента управления, переопределите этот метод, чтобы вернуть ошибку HRESULT.

IOleObjectImpl::OnPreVerbUIActivate

Вызывается DoVerbUIActivate перед активацией пользовательского интерфейса элемента управления.

HRESULT OnPreVerbUIActivate();

Возвращаемое значение

Возвращает S_OK.

Замечания

Чтобы предотвратить активацию пользовательского интерфейса элемента управления, переопределите этот метод, чтобы вернуть ошибку HRESULT.

IOleObjectImpl::SetClientSite

Сообщает элементу управления о своем клиентском сайте в контейнере.

STDMETHOD(SetClientSite)(IOleClientSite* pClientSite);

Замечания

Затем метод возвращает S_OK.

См. раздел IOleObject::SetClientSite в пакете SDK для Windows.

IOleObjectImpl::SetColorScheme

Рекомендует цветовую схему приложению элемента управления, если таковые есть.

STDMETHOD(SetColorScheme)(LOGPALETTE* /* pLogPal */);

Возвращаемое значение

Возвращает E_NOTIMPL.

Замечания

См . раздел IOleObject::SetColorScheme в пакете SDK для Windows.

IOleObjectImpl::SetExtent

Задает степень области отображения элемента управления.

STDMETHOD(SetExtent)(
    DWORD dwDrawAspect,
    SIZEL* psizel);

Замечания

SetExtent В противном случае сохраняет значение, на которое указывает psizel член данных класса элемента управления CComControlBase::m_sizeExtent. Это значение находится в единицах HIMETRIC (0,01 миллиметра на единицу).

Если элемент данных класса управления CComControlBase::m_bResizeNatural имеет значение TRUE, SetExtent также сохраняет значение, указываемое psizel в элементе данных класса управления CComControlBase::m_sizeNatural.

Если элемент данных класса управления CComControlBase::m_bRecomposeOnResize имеет значение TRUE, вызовы SendOnDataChange и SendOnViewChange уведомление обо всех приемниках рекомендаций, SetExtent зарегистрированных в владельце совете, о том, что размер элемента управления изменился.

См . раздел IOleObject::SetExtent в пакете SDK для Windows.

IOleObjectImpl::SetHostNames

Указывает элементу управления имена приложения контейнера и документа контейнера.

STDMETHOD(SetHostNames)(LPCOLESTR /* szContainerApp */, LPCOLESTR /* szContainerObj */);

Возвращаемое значение

Возвращает S_OK.

Замечания

См . раздел IOleObject::SetHostNames в пакете SDK для Windows.

IOleObjectImpl::SetMoniker

Сообщает элементу управления, что его моникер.

STDMETHOD(SetMoniker)(
    DWORD /* dwWhichMoniker */,
    IMoniker** /* pmk */);

Возвращаемое значение

Возвращает E_NOTIMPL.

Замечания

См . раздел IOleObject::SetMoniker в пакете SDK для Windows.

IOleObjectImpl::Unadvise

Удаляет консультативное подключение, хранящееся в элементе данных класса m_spOleAdviseHolder элемента управления.

STDMETHOD(Unadvise)(DWORD dwConnection);

Замечания

См . раздел IOleObject::Unadvise в пакете SDK для Windows.

IOleObjectImpl::Update

Обновляет элемент управления.

STDMETHOD(Update)(void);

Возвращаемое значение

Возвращает S_OK.

Замечания

См. раздел IOleObject::Update в пакете SDK для Windows.

См. также

Класс CComControl
Интерфейсы элементов управления ActiveX
Общие сведения о классе