IViewObjectExImpl (clase)
Esta clase implementa IUnknown
y proporciona las implementaciones predeterminadas de las interfaces IViewObject, IViewObject2 y IViewObjectEx.
Importante
Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.
Sintaxis
template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
: public IViewObjectEx
Parámetros
T
La clase, que se deriva de IViewObjectExImpl
.
Miembros
Métodos públicos
Nombre | Descripción |
---|---|
IViewObjectExImpl::Draw | Traza una representación del control en un contexto de dispositivo. |
IViewObjectExImpl::Freeze | Inmoviliza la representación trazada de un control para que no cambie hasta Unfreeze . La implementación ATL devuelve E_NOTIMPL. |
IViewObjectExImpl::GetAdvise | Recupera, si la hay, una conexión receptora de asesoramiento existente en el control. |
IViewObjectExImpl::GetColorSet | Devuelve la paleta lógica que usa el control para dibujar. La implementación ATL devuelve E_NOTIMPL. |
IViewObjectExImpl::GetExtent | Recupera el tamaño de visualización del control en unidades HIMETRIC, (0,01 milímetros por unidad), del miembro de datos de clase de control CComControlBase::m_sizeExtent. |
IViewObjectExImpl::GetNaturalExtent | Proporciona sugerencias de tamaño del contenedor para que utilice el objeto cuando el usuario cambie las dimensiones. |
IViewObjectExImpl::GetRect | Devuelve un rectángulo que describe un aspecto del dibujo solicitado La implementación ATL devuelve E_NOTIMPL. |
IViewObjectExImpl::GetViewStatus | Devuelve información sobre la opacidad del objeto y los aspectos del dibujo que se admiten. |
IViewObjectExImpl::QueryHitPoint | Comprueba si el punto especificado está en el rectángulo determinado y devuelve un valor HITRESULT en pHitResult . |
IViewObjectExImpl::QueryHitRect | Comprueba si el rectángulo de visualización del control se superpone en un sitio del rectángulo de ubicación especificado y devuelve un valor HITRESULT en pHitResult . |
IViewObjectExImpl::SetAdvise | Configura una conexión entre el control y el receptor de avisos para que se pueda notificar al receptor los cambios en la vista de control. |
IViewObjectExImpl::Unfreeze | Descongela la representación trazada del control. La implementación ATL devuelve E_NOTIMPL. |
Comentarios
Las interfaces IViewObject, IViewObject2 y IViewObjectEx permiten que un control se muestre directamente, además de crear y gestionar un receptor de avisos para que notifique sobre los cambios en la pantalla del control. La interfaz IViewObjectEx
ofrece compatibilidad con características de control extendidas, como dibujo sin parpadeo, controles transparentes no rectangulares y pruebas de posicionamiento, (por ejemplo,a qué distancia tiene que estar el clic del mouse para que se tenga en cuenta en el control). La clase IViewObjectExImpl
proporciona una implementación predeterminada de estas interfaces e implementa IUnknown
mediante el envío de información al dispositivo de volcado de memoria en compilaciones de depuración.
Jerarquía de herencia
IViewObjectEx
IViewObjectExImpl
Requisitos
Encabezado: atlctl.h
IViewObjectExImpl::Draw
Traza una representación del control en un contexto de 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 */);
Comentarios
Este método llama a CComControl::OnDrawAdvanced
que a su vez llama al método OnDraw
de la clase de control. Un método OnDraw
se agrega automáticamente a la clase de control al crearse el control con el asistente de controles ATL. El valor predeterminado OnDraw
del asistente traza un rectángulo con la etiqueta «ATL 3.0».
Consulte IViewObject::D raw en Windows SDK.
IViewObjectExImpl::Freeze
Inmoviliza la representación trazada de un control para que no cambie hasta Unfreeze
. La implementación ATL devuelve E_NOTIMPL.
STDMETHOD(Freeze)(
DWORD /* dwAspect */,
LONG /* lindex */,
void* /* pvAspect */,
DWORD* /* pdwFreeze */);
Comentarios
Vea IViewObject::Freeze en Windows SDK.
IViewObjectExImpl::GetAdvise
Recupera, si la hay, una conexión receptora de asesoramiento existente en el control.
STDMETHOD(GetAdvise)(
DWORD* /* pAspects */,
DWORD* /* pAdvf */,
IAdviseSink** /* ppAdvSink */);
Comentarios
El receptor de avisos se almacena en el miembro de datos de clase de control CComControlBase::m_spAdviseSink.
Consulte IViewObject::GetAdvise en Windows SDK.
IViewObjectExImpl::GetColorSet
Devuelve la paleta lógica que usa el control para dibujar. La implementación ATL devuelve E_NOTIMPL.
STDMETHOD(GetColorSet)(
DWORD /* dwAspect */,
LONG /* lindex */,
void* /* pvAspect */,
DVTARGETDEVICE* /* ptd */,
HDC /* hicTargetDevice */,
LOGPALETTE** /* ppColorSet */);
Comentarios
Consulte IViewObject::GetColorSet en Windows SDK.
IViewObjectExImpl::GetExtent
Recupera el tamaño de visualización del control en unidades HIMETRIC, (0,01 milímetros por unidad), del miembro de datos de clase de control CComControlBase::m_sizeExtent.
STDMETHOD(GetExtent)(
DWORD /* dwDrawAspect */,
LONG /* lindex */,
DVTARGETDEVICE* /* ptd */,
LPSIZEL* lpsizel);
Comentarios
Consulte IViewObject2::GetExtent en Windows SDK.
IViewObjectExImpl::GetNaturalExtent
Proporciona sugerencias de tamaño del contenedor para que utilice el objeto cuando el usuario cambie las dimensiones.
STDMETHOD(GetNaturalExtent)(
DWORD dwAspect,
LONG /* lindex */,
DVTARGETDEVICE* /* ptd */,
HDC /* hicTargetDevice */,
DVEXTENTINFO* pExtentInfo,
LPSIZEL psizel);
Comentarios
Si dwAspect
es DVASPECT_CONTENT y pExtentInfo->dwExtentMode es DVEXTENT_CONTENT, se establece * psizel
en el miembro de datos de clase de control CComControlBase::m_sizeNatural. De lo contrario, devuelve un código de error. HRESULT.
Consulte IViewObjectEx::GetNaturalExtent en Windows SDK.
IViewObjectExImpl::GetRect
Devuelve un rectángulo que describe un aspecto del dibujo solicitado La implementación ATL devuelve E_NOTIMPL.
STDMETHOD(GetRect)(DWORD /* dwAspect */, LPRECTL /* pRect */);
Comentarios
Consulte IViewObjectEx::GetRect en Windows SDK.
IViewObjectExImpl::GetViewStatus
Devuelve información sobre la opacidad del objeto y los aspectos del dibujo que se admiten.
STDMETHOD(GetViewStatus)(DWORD* pdwStatus);
Comentarios
De forma predeterminada, ATL establece pdwStatus
para indicar que el control admite VIEWSTATUS_OPAQUE, (los valores posibles figuran en la enumeración VIEWSTATUS).
Consulte IViewObjectEx::GetViewStatus en Windows SDK.
IViewObjectExImpl::QueryHitPoint
Comprueba si el punto especificado está en el rectángulo determinado y devuelve un valor HITRESULT en pHitResult
.
STDMETHOD(QueryHitPoint)(
DWORD dwAspect,
LPCRECT pRectBounds,
POINT ptlLoc,
LONG /* lCloseHit */,
DWORD* /* pHitResult */);
Comentarios
El valor puede ser o HITRESULT_HIT o HITRESULT_OUTSIDE.
Si dwAspect
es igual a DVASPECT_CONTENT, el método devuelve S_OK. De lo contrario, el método devuelve E_FAIL.
Consulte IViewObjectEx::QueryHitPoint en Windows SDK.
IViewObjectExImpl::QueryHitRect
Comprueba si el rectángulo de visualización del control se superpone en un sitio del rectángulo de ubicación especificado y devuelve un valor HITRESULT en pHitResult
.
STDMETHOD(QueryHitRect)(
DWORD dwAspect,
LPCRECT pRectBounds,
LPRECT prcLoc,
LONG /* lCloseHit */,
DWORD* /* pHitResult */);
Comentarios
El valor puede ser o HITRESULT_HIT o HITRESULT_OUTSIDE.
Si dwAspect
es igual a DVASPECT_CONTENT, el método devuelve S_OK. De lo contrario, el método devuelve E_FAIL.
Consulte IViewObjectEx::QueryHitRect en Windows SDK.
IViewObjectExImpl::SetAdvise
Configura una conexión entre el control y el receptor de avisos para que se pueda notificar al receptor los cambios en la vista de control.
STDMETHOD(SetAdvise)(
DWORD /* aspects */,
DWORD /* advf */,
IAdviseSink* pAdvSink);
Comentarios
El puntero a la interfaz IAdviseSink del receptor de aviso se almacena en el miembro de datos de clase de control CComControlBase::m_spAdviseSink.
Consulte IViewObject::SetAdvise en Windows SDK.
IViewObjectExImpl::Unfreeze
Descongela la representación trazada del control. La implementación ATL devuelve E_NOTIMPL.
STDMETHOD(Unfreeze)(DWORD /* dwFreeze */);
Comentarios
Consulte IViewObject::Unfreeze en Windows SDK.
IWorkerThreadClient::CloseHandle
Implementa este método para cerrar el control asociado a este objeto.
HRESULT CloseHandle(HANDLE hHandle);
Parámetros
hHandle
El manipulador que se va a cerrar.
Valor devuelto
Devuelve S_OK si es correcto o en caso de error, un error HRESULT.
Comentarios
El manipulador que se pasó a este método estaba anteriormente asociado a este objeto mediante una llamada a CWorkerThread::AddHandle.
Ejemplo
En el código siguiente se muestra una implementación sencilla 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
Este método se implementa para ejecutar código cuando se señale el identificador asociado a este objeto.
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
Parámetros
dwParam
El parámetro del usuario.
hObject
El manipulador que se ha indicado.
Valor devuelto
Devuelve S_OK si es correcto o en caso de error, un error HRESULT.
Comentarios
El manipulador y el puntero o DWORD que se pasó a este método estaba asociado anteriormente a este objeto mediante una llamada a CWorkerThread::AddHandle.
Ejemplo
En el código siguiente se muestra una implementación sencilla 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 también
CComControl (clase)
Interfaces de controles ActiveX
Tutorial
Creación de un proyecto ATL
Información general sobre la clase