Compartilhar via


Classe IOleObjectImpl

Essa classe implementa IUnknown e é a interface principal por meio da qual um contêiner se comunica com um controle.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

template<class T>
class ATL_NO_VTABLE IOleObjectImpl : public IOleObject

Parâmetros

T
Sua classe, derivada de IOleObjectImpl.

Membros

Métodos públicos

Nome Descrição
IOleObjectImpl::Advise Estabelece uma conexão de consultoria com o controle.
IOleObjectImpl::Close Altera o estado do controle de execução para carregado.
IOleObjectImpl::DoVerb Informa ao controle para executar uma de suas ações enumeradas.
IOleObjectImpl::DoVerbDiscardUndo Informa ao controle para descartar qualquer estado de desfazer que ele está mantendo.
IOleObjectImpl::DoVerbHide Informa ao controle para remover sua interface do usuário do modo de exibição.
IOleObjectImpl::DoVerbInPlaceActivate Executa o controle e instala sua janela, mas não instala a interface do usuário do controle.
IOleObjectImpl::DoVerbOpen Faz com que o controle seja editado em uma janela separada.
IOleObjectImpl::DoVerbPrimary Executa a ação especificada quando o usuário clica duas vezes no controle. O controle define a ação, geralmente para ativar o controle in-loco.
IOleObjectImpl::DoVerbShow Mostra um controle recém-inserido ao usuário.
IOleObjectImpl::DoVerbUIActivate Ativa o controle in-loco e mostra a interface do usuário do controle, como menus e barras de ferramentas.
IOleObjectImpl::EnumAdvise Enumera as conexões de consultoria do controle.
IOleObjectImpl::EnumVerbs Enumera ações para o controle.
IOleObjectImpl::GetClientSite Recupera o site cliente do controle.
IOleObjectImpl::GetClipboardData Recupera dados da área de transferência. A implementação da ATL retorna E_NOTIMPL.
IOleObjectImpl::GetExtent Recupera a extensão da área de exibição do controle.
IOleObjectImpl::GetMiscStatus Recupera o status do controle.
IOleObjectImpl::GetMoniker Recupera o moniker do controle. A implementação da ATL retorna E_NOTIMPL.
IOleObjectImpl::GetUserClassID Recupera o identificador de classe do controle.
IOleObjectImpl::GetUserType Recupera o nome de tipo de usuário do controle.
IOleObjectImpl::InitFromData Inicializa o controle de dados selecionados. A implementação da ATL retorna E_NOTIMPL.
IOleObjectImpl::IsUpToDate Verifica se o controle está atualizado. A implementação da ATL retorna S_OK.
IOleObjectImpl::OnPostVerbDiscardUndo Chamado por DoVerbDiscardUndo depois que o estado de desfazer é descartado.
IOleObjectImpl::OnPostVerbHide Chamado por DoVerbHide depois que o controle está oculto.
IOleObjectImpl::OnPostVerbInPlaceActivate Chamado por DoVerbInPlaceActivate depois que o controle é ativado no local.
IOleObjectImpl::OnPostVerbOpen Chamado por DoVerbOpen depois que o controle foi aberto para edição em uma janela separada.
IOleObjectImpl::OnPostVerbShow Chamado pelo DoVerbShow depois que o controle é tornado visível.
IOleObjectImpl::OnPostVerbUIActivate Chamado por DoVerbUIActivate após a interface do usuário do controle ter sido ativada.
IOleObjectImpl::OnPreVerbDiscardUndo Chamado por DoVerbDiscardUndo antes que o estado de desfazer seja descartado.
IOleObjectImpl::OnPreVerbHide Chamado por DoVerbHide antes que o controle seja oculto.
IOleObjectImpl::OnPreVerbInPlaceActivate Chamado por DoVerbInPlaceActivate antes que o controle seja ativado no local.
IOleObjectImpl::OnPreVerbOpen Chamado por DoVerbOpen antes que o controle seja aberto para edição em uma janela separada.
IOleObjectImpl::OnPreVerbShow Chamado pelo DoVerbShow antes que o controle seja tornado visível.
IOleObjectImpl::OnPreVerbUIActivate Chamado por DoVerbUIActivate antes que a interface do usuário do controle tenha sido ativada.
IOleObjectImpl::SetClientSite Informa o controle sobre seu site cliente no contêiner.
IOleObjectImpl::SetColorScheme Recomenda um esquema de cores para o aplicativo do controle, se houver. A implementação da ATL retorna E_NOTIMPL.
IOleObjectImpl::SetExtent Define a extensão da área de exibição do controle.
IOleObjectImpl::SetHostNames Informa ao controle os nomes do aplicativo de contêiner e do documento de contêiner.
IOleObjectImpl::SetMoniker Informa ao controle qual é o seu moniker. A implementação da ATL retorna E_NOTIMPL.
IOleObjectImpl::Unadvise Exclui uma conexão de consultoria com o controle.
IOleObjectImpl::Update Atualiza o controle. A implementação da ATL retorna S_OK.

Comentários

A interface IOleObject é a interface principal por meio da qual um contêiner se comunica com um controle. A classe IOleObjectImpl fornece uma implementação padrão dessas interfaces e implementa IUnknown enviando informações para o dispositivo de despejo em builds de depuração.

Artigos relacionados Tutorial da ATL, criando um projeto da ATL

Hierarquia de herança

IOleObject

IOleObjectImpl

Requisitos

Cabeçalho: atlctl.h

IOleObjectImpl::Advise

Estabelece uma conexão de consultoria com o controle.

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

Comentários

Consulte IOleObject::Advise no SDK do Windows.

IOleObjectImpl::Close

Altera o estado do controle de execução para carregado.

STDMETHOD(Close)(DWORD dwSaveOption);

Comentários

Desativa o controle e destrói a janela de controle se ela existir. Se o membro de dados da classe de controle CComControlBase::m_bRequiresSave for TRUE e o parâmetro dwSaveOption for OLECLOSE_SAVEIFDIRTY ou OLECLOSE_PROMPTSAVE, as propriedades de controle serão salvas antes de fechar.

Os ponteiros mantidos nos membros de dados da classe de controle CComControlBase::m_spInPlaceSite e CComControlBase::m_spAdviseSink são liberados e os membros de dados CComControlBase::m_bNegotiatedWnd, CComControlBase::m_bWndless e CComControlBase::m_bInPlaceSiteEx estão definidos como FALSE.

Consulte IOleObject::Advise no SDK do Windows.

IOleObjectImpl::DoVerb

Informa ao controle para executar uma de suas ações enumeradas.

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

Comentários

Dependendo do valor de iVerb, uma das funções auxiliares da ATL DoVerb é chamada da seguinte maneira:

iVerb Value Função auxiliar do DoVerb chamada
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

Consulte IOleObject::DoVerb no SDK do Windows.

IOleObjectImpl::DoVerbDiscardUndo

Informa ao controle para descartar qualquer estado de desfazer que ele está mantendo.

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

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle.

Valor de retorno

Returns S_OK.

IOleObjectImpl::DoVerbHide

Desativa e remove a interface do usuário do controle e oculta o controle.

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

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle. Não usado na implementação da ATL.

Valor de retorno

Returns S_OK.

IOleObjectImpl::DoVerbInPlaceActivate

Executa o controle e instala sua janela, mas não instala a interface do usuário do controle.

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

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle. Não usado na implementação da ATL.

Valor de retorno

Um dos valores HRESULT padrão.

Comentários

Ativa o controle em vigor chamando CComControlBase::InPlaceActivate. A menos que o membro m_bWindowOnly de dados da classe de controle seja TRUE, DoVerbInPlaceActivate primeiro tentará ativar o controle como um controle sem janelas (possível somente se o contêiner der suporte a IOleInPlaceSiteWindowless). Se isso falhar, a função tentará ativar o controle com recursos estendidos (possível somente se o contêiner der suporte a IOleInPlaceSiteEx). Se isso falhar, a função tentará ativar o controle com recursos estendidos (possível somente se o contêiner der suporte a IOleInPlaceSite). Se a ativação for bem-sucedida, a função notificará o contêiner em que o controle foi ativado.

IOleObjectImpl::DoVerbOpen

Faz com que o controle seja editado em uma janela separada.

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

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle.

Valor de retorno

Returns S_OK.

IOleObjectImpl::DoVerbPrimary

Define a ação executada quando o usuário clica duas vezes no controle.

HRESULT DoVerbPrimary(LPCRECT prcPosRect, HWND hwndParent);

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle.

Valor de retorno

Um dos valores HRESULT padrão.

Comentários

Por padrão, defina para exibir as páginas de propriedades. Você pode substituir isso em sua classe de controle para invocar um comportamento diferente ao clicar duas vezes; por exemplo, reproduza um vídeo ou in-loco ativo.

IOleObjectImpl::DoVerbShow

Informa ao contêiner para tornar o controle visível.

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

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle. Não usado na implementação da ATL.

Valor de retorno

Um dos valores HRESULT padrão.

IOleObjectImpl::DoVerbUIActivate

Ativa a interface do usuário do controle e notifica o contêiner de que seus menus estão sendo substituídos por menus compostos.

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

Parâmetros

prcPosRec
[in] Ponteiro para o retângulo no qual o contêiner deseja que o controle seja desenhado.

hwndParent
[in] Identificador da janela que contém o controle. Não usado na implementação da ATL.

Valor de retorno

Um dos valores HRESULT padrão.

IOleObjectImpl::EnumAdvise

Fornece uma enumeração de conexões de consultoria registradas para esse controle.

STDMETHOD(EnumAdvise)(IEnumSTATDATA** ppenumAdvise);

Comentários

Consulte IOleObject::EnumAdvise no SDK do Windows.

IOleObjectImpl::EnumVerbs

Fornece uma enumeração de ações registradas (verbos) para esse controle chamando OleRegEnumVerbs.

STDMETHOD(EnumVerbs)(IEnumOLEVERB** ppEnumOleVerb);

Comentários

Você pode adicionar verbos ao arquivo .rgs do projeto. Por exemplo, consulte CIRCCTL.RGS no exemplo CIRC.

Consulte IOleObject::EnumAdvise no SDK do Windows.

IOleObjectImpl::GetClientSite

Coloca o ponteiro no membro de dados da classe de controle CComControlBase::m_spClientSite em ppClientSite e incrementa a contagem de referência no ponteiro.

STDMETHOD(GetClientSite)(IOleClientSite** ppClientSite);

Comentários

Consulte IOleObject::GetClientSite no SDK do Windows.

IOleObjectImpl::GetClipboardData

Recupera dados da área de transferência.

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

Valor de retorno

Retorna E_NOTIMPL.

Comentários

Consulte IOleObject::GetClipboardData no SDK do Windows.

IOleObjectImpl::GetExtent

Recupera o tamanho de exibição de um controle em execução em unidades HIMETRIC (0,01 milímetros por unidade).

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

Comentários

O tamanho é armazenado no membro de dados da classe de controle CComControlBase::m_sizeExtent.

Consulte IOleObject::GetExtent no SDK do Windows.

IOleObjectImpl::GetMiscStatus

Retorna um ponteiro para informações de status registradas para o controle chamando OleRegGetMiscStatus.

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

Comentários

As informações de status incluem comportamentos compatíveis com os dados de controle e apresentação. Você pode adicionar informações de status ao arquivo .rgs do projeto.

Consulte IOleObject::GetMiscStatus no SDK do Windows.

IOleObjectImpl::GetMoniker

Recupera o moniker do controle.

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

Valor de retorno

Retorna E_NOTIMPL.

Comentários

Consulte IOleObject::GetMoniker no SDK do Windows.

IOleObjectImpl::GetUserClassID

Retorna o identificador de classe do controle.

STDMETHOD(GetUserClassID)(CLSID* pClsid);

Comentários

Consulte IOleObject::GetUserClassID no SDK do Windows.

IOleObjectImpl::GetUserType

Retorna o nome de tipo de usuário do controle chamando OleRegGetUserType.

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

Comentários

O nome de tipo de usuário é usado para exibição em elementos de interface do usuário, como menus e caixas de diálogo. Você pode alterar o nome de tipo de usuário no arquivo .rgs do projeto.

Consulte IOleObject::GetUserType no SDK do Windows.

IOleObjectImpl::InitFromData

Inicializa o controle de dados selecionados.

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

Valor de retorno

Retorna E_NOTIMPL.

Comentários

Consulte IOleObject::InitFromData no SDK do Windows.

IOleObjectImpl::IsUpToDate

Verifica se o controle está atualizado.

STDMETHOD(IsUpToDate)(void);

Valor de retorno

Returns S_OK.

Comentários

Consulte IOleObject::IsUpToDate no SDK do Windows.

IOleObjectImpl::OnPostVerbDiscardUndo

Chamado por DoVerbDiscardUndo depois que o estado de desfazer é descartado.

HRESULT OnPostVerbDiscardUndo();

Valor de retorno

Returns S_OK.

Comentários

Substitua esse método com o código que você deseja executar depois que o estado de desfazer for descartado.

IOleObjectImpl::OnPostVerbHide

Chamado por DoVerbHide depois que o controle está oculto.

HRESULT OnPostVerbHide();

Valor de retorno

Returns S_OK.

Comentários

Substitua esse método com o código que você deseja executar depois que o controle estiver oculto.

IOleObjectImpl::OnPostVerbInPlaceActivate

Chamado por DoVerbInPlaceActivate depois que o controle é ativado no local.

HRESULT OnPostVerbInPlaceActivate();

Valor de retorno

Returns S_OK.

Comentários

Substitua esse método com o código que você deseja executar depois que o controle for ativado no local.

IOleObjectImpl::OnPostVerbOpen

Chamado por DoVerbOpen depois que o controle foi aberto para edição em uma janela separada.

HRESULT OnPostVerbOpen();

Valor de retorno

Returns S_OK.

Comentários

Substitua esse método com o código que você deseja executar depois que o controle for aberto para edição em uma janela separada.

IOleObjectImpl::OnPostVerbShow

Chamado pelo DoVerbShow depois que o controle é tornado visível.

HRESULT OnPostVerbShow();

Valor de retorno

Returns S_OK.

Comentários

Substitua esse método com o código que você deseja executar depois que o controle for tornado visível.

IOleObjectImpl::OnPostVerbUIActivate

Chamado por DoVerbUIActivate após a interface do usuário do controle ter sido ativada.

HRESULT OnPostVerbUIActivate();

Valor de retorno

Returns S_OK.

Comentários

Substitua esse método com o código que você deseja executar depois que a interface do usuário do controle for ativada.

IOleObjectImpl::OnPreVerbDiscardUndo

Chamado por DoVerbDiscardUndo antes que o estado de desfazer seja descartado.

HRESULT OnPreVerbDiscardUndo();

Valor de retorno

Returns S_OK.

Comentários

Para evitar que o estado de desfazer seja descartado, substitua esse método para retornar um erro HRESULT.

IOleObjectImpl::OnPreVerbHide

Chamado por DoVerbHide antes que o controle seja oculto.

HRESULT OnPreVerbHide();

Valor de retorno

Returns S_OK.

Comentários

Para impedir que o controle seja oculto, substitua esse método para retornar um erro HRESULT.

IOleObjectImpl::OnPreVerbInPlaceActivate

Chamado por DoVerbInPlaceActivate antes que o controle seja ativado no local.

HRESULT OnPreVerbInPlaceActivate();

Valor de retorno

Returns S_OK.

Comentários

Para impedir que o controle seja ativado no local, substitua esse método para retornar um erro HRESULT.

IOleObjectImpl::OnPreVerbOpen

Chamado por DoVerbOpen antes que o controle seja aberto para edição em uma janela separada.

HRESULT OnPreVerbOpen();

Valor de retorno

Returns S_OK.

Comentários

Para impedir que o controle seja aberto para edição em uma janela separada, substitua esse método para retornar um erro HRESULT.

IOleObjectImpl::OnPreVerbShow

Chamado pelo DoVerbShow antes que o controle seja tornado visível.

HRESULT OnPreVerbShow();

Valor de retorno

Returns S_OK.

Comentários

Para impedir que o controle seja tornado visível, substitua esse método para retornar um erro HRESULT.

IOleObjectImpl::OnPreVerbUIActivate

Chamado por DoVerbUIActivate antes que a interface do usuário do controle tenha sido ativada.

HRESULT OnPreVerbUIActivate();

Valor de retorno

Returns S_OK.

Comentários

Para impedir que a interface do usuário do controle seja ativada, substitua esse método para retornar um erro HRESULT.

IOleObjectImpl::SetClientSite

Informa o controle sobre seu site cliente no contêiner.

STDMETHOD(SetClientSite)(IOleClientSite* pClientSite);

Comentários

Em seguida, o método retorna S_OK.

Consulte IOleObject::SetClientSite no SDK do Windows.

IOleObjectImpl::SetColorScheme

Recomenda um esquema de cores para o aplicativo do controle, se houver.

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

Valor de retorno

Retorna E_NOTIMPL.

Comentários

Consulte IOleObject::SetColorScheme no SDK do Windows.

IOleObjectImpl::SetExtent

Define a extensão da área de exibição do controle.

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

Comentários

Caso contrário, SetExtent armazena o valor apontado pelo psizel no membro de dados da classe de controle CComControlBase::m_sizeExtent. Esse valor está em unidades HIMETRIC (0,01 milímetro por unidade).

Se o membro de dados da classe de controle CComControlBase::m_bResizeNatural for TRUE, SetExtent também armazenará o valor apontado pelo psizel no membro de dados da classe de controle CComControlBase::m_sizeNatural.

Se o membro de dados da classe de controle CComControlBase::m_bRecomposeOnResize for TRUE, SetExtent chamará SendOnDataChange e SendOnViewChange notificará todos os coletores de consultoria registrados com o titular da consultoria de que o tamanho do controle foi alterado.

Consulte IOleObject::SetExtent no SDK do Windows.

IOleObjectImpl::SetHostNames

Informa ao controle os nomes do aplicativo de contêiner e do documento de contêiner.

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

Valor de retorno

Returns S_OK.

Comentários

Consulte IOleObject::SetHostNames no SDK do Windows.

IOleObjectImpl::SetMoniker

Informa ao controle qual é o seu moniker.

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

Valor de retorno

Retorna E_NOTIMPL.

Comentários

Consulte IOleObject::SetMoniker no SDK do Windows.

IOleObjectImpl::Unadvise

Exclui a conexão de consultoria armazenada no m_spOleAdviseHolder membro de dados da classe de controle.

STDMETHOD(Unadvise)(DWORD dwConnection);

Comentários

Consulte IOleObject::Unadvise no SDK do Windows.

IOleObjectImpl::Update

Atualiza o controle.

STDMETHOD(Update)(void);

Valor de retorno

Returns S_OK.

Comentários

Consulte IOleObject::Update no SDK do Windows.

Confira também

Classe CComControl
Interfaces de controles ActiveX
Visão geral da aula