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 fornece implementações padrão das interfaces IViewObject, IViewObject2 e IViewObjectEx .
Importante
Essa classe e seus membros não podem ser usados em aplicativos executados no Tempo de Execução do Windows.
Sintaxe
template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
: public IViewObjectEx
Parâmetros
T
A sua classe, derivada de IViewObjectExImpl.
Membros
Métodos Públicos
| Nome | Description |
|---|---|
| IViewObjectExImpl::D raw | Desenha uma representação do controlo no contexto de um dispositivo. |
| IViewObjectExImpl::Freeze | Congela a representação desenhada de um controlo para que não mude até que um Unfreeze. A implementação do ATL devolve E_NOTIMPL. |
| IViewObjectExImpl::GetAdvise | Recupera uma ligação de afundamento de aviso existente no controlo, se existir. |
| IViewObjectExImpl::GetColorSet | Devolve a paleta lógica usada pelo controlo para desenhar. A implementação do ATL devolve E_NOTIMPL. |
| IViewObjectExImpl::GetExtent | Recupera o tamanho do ecrã do controlo em unidades HIMÉTRICAS (0,01 milímetros por unidade) do membro de dados da classe de controlo CComControlBase::m_sizeExtent. |
| IViewObjectExImpl::ObtendoExtensãoNaturalT | Fornece dicas de dimensionamento a partir do contentor para o objeto usar enquanto o utilizador o redimensiona. |
| IViewObjectExImpl::GetRect | Devolve um retângulo que descreve um aspeto de desenho solicitado. A implementação do ATL devolve E_NOTIMPL. |
| IViewObjectExImpl::GetViewStatus | Devolve informação sobre a opacidade do objeto e quais os aspetos de desenho suportados. |
| IViewObjectExImpl::QueryHitPoint | Verifica se o ponto especificado está no retângulo especificado e devolve um valor HITRESULT em pHitResult. |
| IViewObjectExImpl::QueryHitRect | Verifica se o retângulo do ecrã do controlo se sobrepõe a qualquer ponto do retângulo de localização especificado e devolve um valor HITRESULT em pHitResult. |
| IViewObjectExImpl::SetAdvise | Estabelece uma ligação entre o controlo e um lavatório de aviso para que o pino possa ser notificado sobre alterações na visão do controlo. |
| IViewObjectExImpl::Descongelar | Descongela a representação desenhada do controlo. A implementação do ATL devolve E_NOTIMPL. |
Observações
As interfaces IViewObject, IViewObject2 e IViewObjectEx permitem que um controlo se apresente diretamente e crie e gere um sumidouro de aconselhamento para notificar o contentor sobre alterações no ecrã de controlo. A IViewObjectEx interface oferece suporte para funcionalidades de controlo estendidas, como desenho sem cintilação, controlos não retangulares e transparentes, e testes de acerto (por exemplo, quão próximo deve estar um clique do rato para ser considerado no controlo). Class IViewObjectExImpl fornece uma implementação padrão destas interfaces e implementa IUnknown enviando informação para o dispositivo de despejo em builds de depuração.
Hierarquia de herança
IViewObjectEx
IViewObjectExImpl
Requerimentos
Cabeçalho: atlctl.h
IViewObjectExImpl::D raw
Desenha uma representação do controlo no contexto de um dispositivo.
STDMETHOD(Draw)(
DWORD dwDrawAspect,
LONG lindex,
void* pvAspect,
DVTARGETDEVICE* ptd,
HDC hicTargetDev,
LPCRECTL prcBounds,
LPCRECTL prcWBounds,
BOOL(_stdcall* /* pfnContinue*/) (DWORD_PTR dwContinue),
DWORD_PTR /* dwContinue */);
Observações
Este método chama CComControl::OnDrawAdvanced que, por sua vez, chama o método da OnDraw sua classe de controlo. Um OnDraw método é automaticamente adicionado à sua classe de controlo quando cria o seu controlo com o ATL Control Wizard. O padrão OnDraw do Wizard desenha um retângulo com o rótulo "ATL 3.0".
Veja IViewObject::D raw no SDK do Windows.
IViewObjectExImpl::Freeze
Congela a representação desenhada de um controlo para que não mude até que um Unfreeze. A implementação do ATL devolve E_NOTIMPL.
STDMETHOD(Freeze)(
DWORD /* dwAspect */,
LONG /* lindex */,
void* /* pvAspect */,
DWORD* /* pdwFreeze */);
Observações
Veja IViewObject::Freeze no SDK do Windows.
IViewObjectExImpl::GetAdvise
Recupera uma ligação de afundamento de aviso existente no controlo, se existir.
STDMETHOD(GetAdvise)(
DWORD* /* pAspects */,
DWORD* /* pAdvf */,
IAdviseSink** /* ppAdvSink */);
Observações
O sumidouro de aviso é armazenado no membro de dados da classe de controlo CComControlBase::m_spAdviseSink.
Veja IViewObject::GetAdvise no SDK do Windows.
IViewObjectExImpl::GetColorSet
Devolve a paleta lógica usada pelo controlo para desenhar. A implementação do ATL devolve E_NOTIMPL.
STDMETHOD(GetColorSet)(
DWORD /* dwAspect */,
LONG /* lindex */,
void* /* pvAspect */,
DVTARGETDEVICE* /* ptd */,
HDC /* hicTargetDevice */,
LOGPALETTE** /* ppColorSet */);
Observações
Veja IViewObject::GetColorSet no SDK do Windows.
IViewObjectExImpl::GetExtent
Recupera o tamanho do ecrã do controlo em unidades HIMÉTRICAS (0,01 milímetros por unidade) do membro de dados da classe de controlo CComControlBase::m_sizeExtent.
STDMETHOD(GetExtent)(
DWORD /* dwDrawAspect */,
LONG /* lindex */,
DVTARGETDEVICE* /* ptd */,
LPSIZEL* lpsizel);
Observações
Veja IViewObject2::GetExtent no SDK do Windows.
IViewObjectExImpl::ObtendoExtensãoNaturalT
Fornece dicas de dimensionamento a partir do contentor para o objeto usar enquanto o utilizador o redimensiona.
STDMETHOD(GetNaturalExtent)(
DWORD dwAspect,
LONG /* lindex */,
DVTARGETDEVICE* /* ptd */,
HDC /* hicTargetDevice */,
DVEXTENTINFO* pExtentInfo,
LPSIZEL psizel);
Observações
Se dwAspect for DVASPECT_CONTENT e pExtentInfo-dwExtentMode> for DVEXTENT_CONTENT, define * psizel para o membro de dados da classe de controlo CComControlBase::m_sizeNatural. Caso contrário, devolve um erro HRESULT.
Veja IViewObjectEx::GetNaturalExtent no SDK do Windows.
IViewObjectExImpl::GetRect
Devolve um retângulo que descreve um aspeto de desenho solicitado. A implementação do ATL devolve E_NOTIMPL.
STDMETHOD(GetRect)(DWORD /* dwAspect */, LPRECTL /* pRect */);
Observações
Veja IViewObjectEx::GetRect no SDK do Windows.
IViewObjectExImpl::GetViewStatus
Devolve informação sobre a opacidade do objeto e quais os aspetos de desenho suportados.
STDMETHOD(GetViewStatus)(DWORD* pdwStatus);
Observações
Por defeito, o ATL define pdwStatus para indicar que o controlo suporta VIEWSTATUS_OPAQUE (os valores possíveis estão na enumeração VIEWSTATUS ).
Veja IViewObjectEx::GetViewStatus no SDK do Windows.
IViewObjectExImpl::QueryHitPoint
Verifica se o ponto especificado está no retângulo especificado e devolve um valor HITRESULT em pHitResult.
STDMETHOD(QueryHitPoint)(
DWORD dwAspect,
LPCRECT pRectBounds,
POINT ptlLoc,
LONG /* lCloseHit */,
DWORD* /* pHitResult */);
Observações
O valor pode ser HITRESULT_HIT ou HITRESULT_OUTSIDE.
Se dwAspect for igual a DVASPECT_CONTENT, o método devolve S_OK. Caso contrário, o método devolve E_FAIL.
Veja IViewObjectEx::QueryHitPoint no SDK do Windows.
IViewObjectExImpl::QueryHitRect
Verifica se o retângulo do ecrã do controlo se sobrepõe a qualquer ponto do retângulo de localização especificado e devolve um valor HITRESULT em pHitResult.
STDMETHOD(QueryHitRect)(
DWORD dwAspect,
LPCRECT pRectBounds,
LPRECT prcLoc,
LONG /* lCloseHit */,
DWORD* /* pHitResult */);
Observações
O valor pode ser HITRESULT_HIT ou HITRESULT_OUTSIDE.
Se dwAspect for igual a DVASPECT_CONTENT, o método devolve S_OK. Caso contrário, o método devolve E_FAIL.
Veja IViewObjectEx::QueryHitRect no SDK do Windows.
IViewObjectExImpl::SetAdvise
Estabelece uma ligação entre o controlo e um lavatório de aviso para que o pino possa ser notificado sobre alterações na visão do controlo.
STDMETHOD(SetAdvise)(
DWORD /* aspects */,
DWORD /* advf */,
IAdviseSink* pAdvSink);
Observações
O ponteiro para a interface IAdviseSink no sumidouro de aconselhamento é armazenado no membro de dados da classe de controlo CComControlBase::m_spAdviseSink.
Veja IViewObject::SetAdvise no SDK do Windows.
IViewObjectExImpl::Descongelar
Descongela a representação desenhada do controlo. A implementação do ATL devolve E_NOTIMPL.
STDMETHOD(Unfreeze)(DWORD /* dwFreeze */);
Observações
Veja IViewObject::Unfreeze no SDK do Windows.
IWorkerThreadClient::CloseHandle
Implemente este método para fechar a alavanca associada a este objeto.
HRESULT CloseHandle(HANDLE hHandle);
Parâmetros
hHandle
A maçaneta deve ser fechada.
Valor de retorno
Devolva S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Observações
O handle passado para este método estava anteriormente associado a este objeto através de uma chamada para CWorkerThread::AddHandle.
Example
O código seguinte mostra uma implementação simples de IWorkerThreadClient::CloseHandle.
HRESULT CloseHandle(HANDLE hObject)
{
// Users should do any shutdown operation required here.
// Generally, this means just closing the handle.
if (!::CloseHandle(hObject))
{
// Closing the handle failed for some reason.
return AtlHresultFromLastError();
}
return S_OK;
}
IWorkerThreadClient::Execute
Implemente este método para executar código quando o handle associado a este objeto for sinalizado.
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
Parâmetros
dwParam
O parâmetro do utilizador.
hObjeto
O nome que se tornou sinalizado.
Valor de retorno
Devolva S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Observações
O handle e o DWORD/pointer passados para este método estavam anteriormente associados a este objeto através de uma chamada para CWorkerThread::AddHandle.
Example
O código seguinte mostra uma implementação simples de IWorkerThreadClient::Execute.
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject)
{
// Cast the parameter to its known type.
LONG* pn = reinterpret_cast<LONG*>(dwParam);
// Increment the LONG.
LONG n = InterlockedIncrement(pn);
// Log the results.
printf_s("Handle 0x%08X incremented value to : %d\n", (DWORD_PTR)hObject, n);
return S_OK;
}
Consulte também
Classe CComControl
Interfaces de Controlo ActiveX
Tutorial
Criando um projeto ATL
Visão geral da classe