Класс 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
Общие сведения о классе