Compartir a través de


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