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