Partilhar via


Classe IOleObjectImpl

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe implementa IUnknown e é a interface principal através da qual um contentor comunica com um controlo.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

template<class T>
class ATL_NO_VTABLE IOleObjectImpl : public IOleObject

Parâmetros

T
A sua classe, derivada de IOleObjectImpl.

Membros

Métodos Públicos

Nome Description
IOleObjectImpl::Advise Estabelece uma ligação consultiva com o controlo.
IOleObjectImpl::Fechar Altera o estado de controlo de correr para carregado.
IOleObjectImpl::D oVerb Diz ao controlo para realizar uma das suas ações enumeradas.
IOleObjectImpl::D oVerbDiscardUndo Diz ao controlo para descartar qualquer estado de desfazer que esteja a manter.
IOleObjectImpl::D oVerbHide Diz ao controlo para remover a interface do utilizador da vista.
IOleObjectImpl::D oVerbInPlaceActivate Executa o controlo e instala a sua janela, mas não instala a interface de utilizador do controlo.
IOleObjectImpl::D oVerbOpen Faz com que o controlo seja editado abertamente numa janela separada.
IOleObjectImpl::D oVerbPrimary Executa a ação especificada quando o utilizador faz duplo clique no controlo. O controlo define a ação, normalmente para ativar o controlo no local.
IOleObjectImpl::D oVerbShow Mostra um controlo recém-inserido ao utilizador.
IOleObjectImpl::D oVerbUIActivate Ativa o controlo no local e mostra a interface de utilizador do controlo, como menus e barras de ferramentas.
IOleObjectImpl::EnumAdvise Enumera as ligações consultivas do controlo.
IOleObjectImpl::EnumVerbs Enumera ações para o controlo.
IOleObjectImpl::GetClientSite Recupera o site do cliente do controlo.
IOleObjectImpl::GetClipboardData Recupera dados do Clipboard. A implementação do ATL devolve E_NOTIMPL.
IOleObjectImpl::GetExtent Recupera a extensão da área de exibição do controlo.
IOleObjectImpl::GetMiscStatus Recupera o estado do controlo.
IOleObjectImpl::GetMoniker Recupera o nome do controlo. A implementação do ATL devolve E_NOTIMPL.
IOleObjectImpl::GetUserClassID Recupera o identificador de classe do controlo.
IOleObjectImpl::GetUserType Recupera o nome do tipo de utilizador do controlo.
IOleObjectImpl::InitFromData Inicializa o controlo a partir dos dados selecionados. A implementação do ATL devolve E_NOTIMPL.
IOleObjectImpl::IsUpToDate Verifica se o controlo está atualizado. A implementação do ATL devolve S_OK.
IOleObjectoImpl::OnPostVerbDisthrowUndo Chamado por DoVerbDiscardUndo depois de o estado de desfazer ser descartado.
IOleObjectImpl::OnPostVerbHide Chamado pelo DoVerbHide depois de o controlo estar oculto.
IOleObjectImpl::OnPostVerbInPlaceActivate Chamado por DoVerbInPlaceActivate depois de o controlo ser ativado no local.
IOleObjectImpl::OnPostVerbOpen Chamado pelo DoVerbOpen depois de o controlo ter sido aberto para edição numa janela separada.
IOleObjectImpl::OnPostVerbShow Chamado pelo DoVerbShow depois de o controlo ter sido tornado visível.
IOleObjectImpl::OnPostVerbUIActivate Chamado por DoVerbUIActivate após a interface de utilizador do controlo ter sido ativada.
IOleObjectImpl::OnPreVerbDiscardUndo Chamado por DoVerbDiscardUndo antes de o estado de desfazer ser descartado.
IOleObjectImpl::OnPreVerbHide Chamado pelo DoVerbHide antes do controlo ser escondido.
IOleObjectImpl::OnPreVerbInPlaceActivate Chamado por DoVerbInPlaceActivate antes de o controlo ser ativado no local.
IOleObjectImpl::OnPreVerbOpen Chamado pelo DoVerbOpen antes de o controlo ser aberto para edição numa janela separada.
IOleObjectImpl::OnPreVerbShow Chamado pelo DoVerbShow antes de o controlo ser tornado visível.
IOleObjectImpl::OnPreVerbUIActivate Chamado pelo DoVerbUIActivate antes de a interface de utilizador do controlo ser ativada.
IOleObjectImpl::SetClientSite Informa o controlo sobre o seu local cliente no contentor.
IOleObjectImpl::SetColorScheme Recomenda um esquema de cores para a aplicação do controlo, se houver. A implementação do ATL devolve E_NOTIMPL.
IOleObjectImpl::SetExtent Define a extensão da área de exibição do controlo.
IOleObjectImpl::SetHostNames Indica ao controlo os nomes da aplicação do contentor e do documento do contentor.
IOleObjectImpl::SetMoniker Diz ao controlo qual é o seu nome. A implementação do ATL devolve E_NOTIMPL.
IOleObjectImpl::Desaconselhar Elimina uma ligação de aviso com o controlo.
IOleObjectImpl::Atualização Atualiza o controlo. A implementação do ATL devolve S_OK.

Observações

A interface IOleObject é a interface principal através da qual um contentor comunica com um controlo. A Class IOleObjectImpl fornece uma implementação padrão desta interface e é IUnknown implementada enviando informação para o dispositivo de despejo em compilações de depuração.

Artigos RelacionadosTutorial ATL, Criação de um Projeto ATL

Hierarquia de herança

IOleObject

IOleObjectImpl

Requerimentos

Cabeçalho: atlctl.h

IOleObjectImpl::Advise

Estabelece uma ligação consultiva com o controlo.

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

Observações

Veja IOleObject::Advise no SDK do Windows.

IOleObjectImpl::Fechar

Altera o estado de controlo de correr para carregado.

STDMETHOD(Close)(DWORD dwSaveOption);

Observações

Desliga o controlo e destrói a janela de controlo, caso exista. Se o membro de dados da classe de controlo CComControlBase::m_bRequiresSave for TRUE e o parâmetro dwSaveOption for OLECLOSE_SAVEIFDIRTY ou OLECLOSE_PROMPTSAVE, as propriedades de controlo são guardadas antes do encerramento.

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

Veja IOleObject::Close no SDK do Windows.

IOleObjectImpl::D oVerb

Diz ao controlo para realizar uma das suas ações enumeradas.

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

Observações

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

iVerb Valor Função auxiliar DoVerb chamada
OLEIVERB_DISCARDUNDOSTATE DoVerVerDescartarDesfazer
OLEIVERB_HIDE DoVerbHide
OLEIVERB_INPLACEACTIVATE DoVerbInPlaceActivate
OLEIVERB_OPEN DoVerbOpen
OLEIVERB_PRIMARY DoVerbPrimary
OLEIVERB_PROPERTIES CComControlBase::D oVerbProperties
OLEIVERB_SHOW DoVerbShow
OLEIVERB_UIACTIVATE DoVerbUIActivate

Veja IOleObject::D oVerb no SDK do Windows.

IOleObjectImpl::D oVerbDiscardUndo

Diz ao controlo para descartar qualquer estado de desfazer que esteja a manter.

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

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo.

Valor de retorno

Devolve S_OK.

IOleObjectImpl::D oVerbHide

Desativa e remove a interface do utilizador do controlo, e esconde o controlo.

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

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo. Não é usado na implementação do ATL.

Valor de retorno

Devolve S_OK.

IOleObjectImpl::D oVerbInPlaceActivate

Executa o controlo e instala a sua janela, mas não instala a interface de utilizador do controlo.

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

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo. Não é usado na implementação do ATL.

Valor de retorno

Um dos valores padrão do HRESULT.

Observações

Ativa o controlo no local ao chamar CComControlBase::InPlaceActivate. A menos que o elemento m_bWindowOnly de dados da classe de controlo seja TRUE, DoVerbInPlaceActivate primeiro tenta ativar o controlo como um controlo sem janelas (possível apenas se o contentor suportar IOleInPlaceSiteWindowless). Se isso falhar, a função tenta ativar o controlo com funcionalidades estendidas (possível apenas se o contentor suportar IOleInPlaceSiteEx). Se isso falhar, a função tenta ativar o controlo sem funcionalidades estendidas (possível apenas se o contentor suportar IOleInPlaceSite). Se a ativação for bem-sucedida, a função notifica o contentor de que o controlo foi ativado.

IOleObjectImpl::D oVerbOpen

Faz com que o controlo seja editado abertamente numa janela separada.

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

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo.

Valor de retorno

Devolve S_OK.

IOleObjectImpl::D oVerbPrimary

Define a ação tomada quando o utilizador clica duas vezes no controlo.

HRESULT DoVerbPrimary(LPCRECT prcPosRect, HWND hwndParent);

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo.

Valor de retorno

Um dos valores padrão do HRESULT.

Observações

Por defeito, defina para mostrar as páginas de propriedades. Podes sobrepor isto na tua classe de controlo para invocar um comportamento diferente ao duplo clique; Por exemplo, reproduz um vídeo ou ativa no local.

IOleObjectImpl::D oVerbShow

Diz ao contentor para tornar o controlo visível.

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

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo. Não é usado na implementação do ATL.

Valor de retorno

Um dos valores padrão do HRESULT.

IOleObjectImpl::D oVerbUIActivate

Ativa a interface de utilizador do controlo e notifica o contentor que os seus menus estão a ser substituídos por menus compostos.

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

Parâmetros

prcPosRec
[dentro] Apontador para o retângulo onde o contentor quer que o controlo desenhe.

hwndParent
[dentro] Pega da janela que contém o controlo. Não é usado na implementação do ATL.

Valor de retorno

Um dos valores padrão do HRESULT.

IOleObjectImpl::EnumAdvise

Fornece uma enumeração de ligações consultivas registadas para este controlo.

STDMETHOD(EnumAdvise)(IEnumSTATDATA** ppenumAdvise);

Observações

Veja IOleObject::EnumAdvise no SDK do Windows.

IOleObjectImpl::EnumVerbs

Fornece uma enumeração de ações registadas (verbos) para este controlo chamando OleRegEnumVerbs.

STDMETHOD(EnumVerbs)(IEnumOLEVERB** ppEnumOleVerb);

Observações

Pode adicionar verbos ao ficheiro .rgs do seu projeto. Por exemplo, veja CIRCCTL. RGS na amostra CIRC .

Veja IOleObject::EnumVerbs no SDK do Windows.

IOleObjectImpl::GetClientSite

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

STDMETHOD(GetClientSite)(IOleClientSite** ppClientSite);

Observações

Consulte IOleObject::GetClientSite no SDK do Windows.

IOleObjectImpl::GetClipboardData

Recupera dados do Clipboard.

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

Valor de retorno

Devolve E_NOTIMPL.

Observações

Veja IOleObject::GetClipboardData no SDK do Windows.

IOleObjectImpl::GetExtent

Recupera o tamanho do ecrã de um controlo em funcionamento em unidades HIMÉTRICAS (0,01 milímetros por unidade).

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

Observações

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

Veja IOleObject::GetExtent no SDK do Windows.

IOleObjectImpl::GetMiscStatus

Devolve um ponteiro para informações de estado registadas para o controlo ao chamar OleRegGetMiscStatus.

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

Observações

A informação de estado inclui comportamentos suportados pelos dados de controlo e apresentação. Pode adicionar informação de estado ao ficheiro .rgs do seu projeto.

Veja IOleObject::GetMiscStatus no SDK do Windows.

IOleObjectImpl::GetMoniker

Recupera o nome do controlo.

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

Valor de retorno

Devolve E_NOTIMPL.

Observações

Veja IOleObject::GetMoniker no SDK do Windows.

IOleObjectImpl::GetUserClassID

Devolve o identificador de classe do controlo.

STDMETHOD(GetUserClassID)(CLSID* pClsid);

Observações

Veja IOleObject::GetUserClassID no SDK do Windows.

IOleObjectImpl::GetUserType

Devolve o nome de utilizador do controlo chamando OleRegGetUserType.

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

Observações

O nome do tipo de utilizador é usado para exibição em elementos de interface de utilizador, como menus e caixas de diálogo. Podes alterar o nome do tipo de utilizador no ficheiro .rgs do teu projeto.

Veja IOleObject::GetUserType no SDK do Windows.

IOleObjectImpl::InitFromData

Inicializa o controlo a partir dos dados selecionados.

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

Valor de retorno

Devolve E_NOTIMPL.

Observações

Veja IOleObject::InitFromData no SDK do Windows.

IOleObjectImpl::IsUpToDate

Verifica se o controlo está atualizado.

STDMETHOD(IsUpToDate)(void);

Valor de retorno

Devolve S_OK.

Observações

Veja IOleObject::IsUpToDate no SDK do Windows.

IOleObjectoImpl::OnPostVerbDisthrowUndo

Chamado por DoVerbDiscardUndo depois de o estado de desfazer ser descartado.

HRESULT OnPostVerbDiscardUndo();

Valor de retorno

Devolve S_OK.

Observações

Substitua este método com código que queres executar depois de o estado de desfazer ser descartado.

IOleObjectImpl::OnPostVerbHide

Chamado pelo DoVerbHide depois de o controlo estar oculto.

HRESULT OnPostVerbHide();

Valor de retorno

Devolve S_OK.

Observações

Substitua este método com código que queres executar depois de o controlo estar oculto.

IOleObjectImpl::OnPostVerbInPlaceActivate

Chamado por DoVerbInPlaceActivate depois de o controlo ser ativado no local.

HRESULT OnPostVerbInPlaceActivate();

Valor de retorno

Devolve S_OK.

Observações

Substitua este método com código que queres executar depois de o controlo estar ativado.

IOleObjectImpl::OnPostVerbOpen

Chamado pelo DoVerbOpen depois de o controlo ter sido aberto para edição numa janela separada.

HRESULT OnPostVerbOpen();

Valor de retorno

Devolve S_OK.

Observações

Substitua este método com o código que queres executar depois de o controlo ter sido aberto para edição numa janela separada.

IOleObjectImpl::OnPostVerbShow

Chamado pelo DoVerbShow depois de o controlo ter sido tornado visível.

HRESULT OnPostVerbShow();

Valor de retorno

Devolve S_OK.

Observações

Substitua este método com o código que queres executar depois de o controlo ter sido tornado visível.

IOleObjectImpl::OnPostVerbUIActivate

Chamado por DoVerbUIActivate após a interface de utilizador do controlo ter sido ativada.

HRESULT OnPostVerbUIActivate();

Valor de retorno

Devolve S_OK.

Observações

Substitua este método com o código que pretende executar depois de ativar a interface de utilizador do controlo.

IOleObjectImpl::OnPreVerbDiscardUndo

Chamado por DoVerbDiscardUndo antes de o estado de desfazer ser descartado.

HRESULT OnPreVerbDiscardUndo();

Valor de retorno

Devolve S_OK.

Observações

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

IOleObjectImpl::OnPreVerbHide

Chamado pelo DoVerbHide antes do controlo ser escondido.

HRESULT OnPreVerbHide();

Valor de retorno

Devolve S_OK.

Observações

Para evitar que o controlo fique oculto, substitua este método para devolver um erro HRESULT.

IOleObjectImpl::OnPreVerbInPlaceActivate

Chamado por DoVerbInPlaceActivate antes de o controlo ser ativado no local.

HRESULT OnPreVerbInPlaceActivate();

Valor de retorno

Devolve S_OK.

Observações

Para evitar que o controlo seja ativado no local, substitua este método para devolver um erro HRESULT.

IOleObjectImpl::OnPreVerbOpen

Chamado pelo DoVerbOpen antes de o controlo ser aberto para edição numa janela separada.

HRESULT OnPreVerbOpen();

Valor de retorno

Devolve S_OK.

Observações

Para evitar que o controlo seja aberto para edição numa janela separada, sobrescreva este método para devolver um erro HRESULT.

IOleObjectImpl::OnPreVerbShow

Chamado pelo DoVerbShow antes de o controlo ser tornado visível.

HRESULT OnPreVerbShow();

Valor de retorno

Devolve S_OK.

Observações

Para evitar que o controlo seja tornado visível, substitua este método para devolver um erro HRESULT.

IOleObjectImpl::OnPreVerbUIActivate

Chamado pelo DoVerbUIActivate antes de a interface de utilizador do controlo ser ativada.

HRESULT OnPreVerbUIActivate();

Valor de retorno

Devolve S_OK.

Observações

Para evitar que a interface de utilizador do controlo seja ativada, sobrescrita este método para devolver um erro HRESULT.

IOleObjectImpl::SetClientSite

Informa o controlo sobre o seu local cliente no contentor.

STDMETHOD(SetClientSite)(IOleClientSite* pClientSite);

Observações

O método devolve então S_OK.

Veja IOleObject::SetClientSite no SDK do Windows.

IOleObjectImpl::SetColorScheme

Recomenda um esquema de cores para a aplicação do controlo, se houver.

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

Valor de retorno

Devolve E_NOTIMPL.

Observações

Veja IOleObject::SetColorScheme no SDK do Windows.

IOleObjectImpl::SetExtent

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

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

Observações

Caso contrário, SetExtent armazena o valor apontado por psizel no membro de dados da classe de controlo CComControlBase::m_sizeExtent. Este valor está em unidades HIMÉTRICAS (0,01 milímetros por unidade).

Se o membro de dados da classe de controlo CComControlBase::m_bResizeNatural for TRUE, SetExtent também armazena o valor apontado por psizel no membro de dados da classe de controlo CComControlBase::m_sizeNatural.

Se o membro de dados da classe de controlo CComControlBase::m_bRecomposeOnResize for TRUE, SetExtent chama SendOnDataChange e SendOnViewChange para notificar todos os sinks de aviso registados junto do titular do aviso que o tamanho do controlo mudou.

Veja IOleObject::SetExtent no SDK do Windows.

IOleObjectImpl::SetHostNames

Indica ao controlo os nomes da aplicação do contentor e do documento do contentor.

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

Valor de retorno

Devolve S_OK.

Observações

Veja IOleObject::SetHostNames no SDK do Windows.

IOleObjectImpl::SetMoniker

Diz ao controlo qual é o seu nome.

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

Valor de retorno

Devolve E_NOTIMPL.

Observações

Veja IOleObject::SetMoniker no SDK do Windows.

IOleObjectImpl::Desaconselhar

Elimina a ligação de aviso armazenada no membro de dados da m_spOleAdviseHolder classe de controlo.

STDMETHOD(Unadvise)(DWORD dwConnection);

Observações

Veja IOleObject::Unadvise no SDK do Windows.

IOleObjectImpl::Atualização

Atualiza o controlo.

STDMETHOD(Update)(void);

Valor de retorno

Devolve S_OK.

Observações

Veja IOleObject::Update no SDK do Windows.

Consulte também

Classe CComControl
Interfaces de Controlo ActiveX
Visão geral da classe