Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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