Compartir a través de


Método ITextServices::TxDraw (textserv.h)

Dibuja el objeto de servicios de texto.

Sintaxis

HRESULT TxDraw(
  [in] DWORD           dwDrawAspect,
       LONG            lindex,
  [in] void            *pvAspect,
  [in] DVTARGETDEVICE  *ptd,
  [in] HDC             hdcDraw,
  [in] HDC             hicTargetDev,
  [in] LPCRECTL        lprcBounds,
  [in] LPCRECTL        lprcWBounds,
  [in] LPRECT          lprcUpdate,
       BOOL(* )(DWORD) pfnContinue,
       DWORD           dwContinue,
       LONG            lViewId
);

Parámetros

[in] dwDrawAspect

Tipo: DWORD

Especifica el aspecto que se va a dibujar, es decir, cómo se representará el objeto. El aspecto de dibujo puede ser uno de los valores siguientes.

Valor Significado
DVASPECT_CONTENT
Representa una imagen de pantalla del contenido de texto en el contexto del dispositivo hdcDraw .

Los parámetros hicTargetDev y ptd proporcionan información sobre el contexto del dispositivo de destino si existe (normalmente una impresora).

DVASPECT_DOCPRINT
Representa el objeto en el contexto del dispositivo hdcDraw como si se imprimiese en una impresora. Por lo tanto, el objeto de servicios de texto puede optimizar para la impresora (por ejemplo, no pintar el color de fondo, si es blanco). Además, algunos elementos específicos de la pantalla (como la selección) no deben representarse.

ITextServices::TxDraw debe representar el rectángulo lprcBounds , empezando por la posición de desplazamiento actual.

lindex

Tipo: LONG

No compatible.

[in] pvAspect

Tipo: void*

Información sobre optimizaciones de dibujo.

[in] ptd

Tipo: DVTARGETDEVICE*

Dispositivo de destino.

[in] hdcDraw

Tipo: HDC

Representación del contexto del dispositivo.

[in] hicTargetDev

Tipo: HDC

Contexto de información de destino.

[in] lprcBounds

Tipo: LPCRECTL

Rectángulo delimitador (cliente).

[in] lprcWBounds

Tipo: LPCRECTL

Rectángulo de recorte para metarchivos.

[in] lprcUpdate

Tipo: LPRECT

Región de actualización dentro de lprcBounds.

pfnContinue

Tipo: DEVOLUCIÓN DE LLAMADA BOOL*

No compatible.

dwContinue

Tipo: DWORD

Parámetro que se va a pasar para continuar la función.

lViewId

Tipo: LONG

Especifica la vista que se va a dibujar.

Valor Significado
TXTVIEW_ACTIVE
Dibuje la vista activa en lugar.
TXTVIEW_INACTIVE
Dibujar una vista distinta de la vista activa en lugar; por ejemplo, una vista previa de impresión.

Valor devuelto

Tipo: HRESULT

El valor devuelto suele ser S_OK.

Comentarios

Este método representa el objeto de servicios de texto. Acepta los mismos parámetros que el método IViewObject::D raw correspondiente en OLE, con los parámetros extra lprcUpdate y lViewId . Se puede usar mientras el host está activo o inactivo.

El parámetro lprcBounds proporciona el rectángulo que se va a representar, también denominado rectángulo de cliente. Este rectángulo representa la posición y la extensión de toda la imagen del objeto de servicios de texto que se va a dibujar. Se expresa en el sistema de coordenadas lógico de hdcDraw. Si lprcBounds es NULL , el control debe estar activo. En este caso, el objeto de servicios de texto debe representar la vista activa en contexto (es decir, el rectángulo de cliente que se puede obtener llamando a TxGetClientRect en el host).

Si el parámetro lprcUpdate no es NULL, proporciona el rectángulo para actualizar dentro de ese rectángulo de cliente, en el sistema de coordenadas lógico de hdcDraw. Si lprcUpdate es NULL, se debe pintar todo el rectángulo del cliente.

El objeto de servicios de texto debe representarse con el factor de zoom adecuado, que se puede obtener del rectángulo de cliente y el tamaño nativo proporcionado por TxGetExtent. Para obtener una explicación del factor de zoom, consulte TxGetExtent.

Comentarios generales sobre hosts OLE e ITextServices::TxDraw (también para ITextServices::OnTxSetCursor e ITextServices::TxQueryHitPoint):

Un host OLE puede llamar al método ITextServices::TxDraw en cualquier momento con cualquier contexto de dispositivo de representación o rectángulo de cliente. Un objeto OLE que está inactivo solo conserva una extensión. Para obtener el rectángulo en el que se va a representar, el host llama al método IViewObject::D raw . Este rectángulo solo es válido para el ámbito de ese método. Por lo tanto, el mismo control se puede representar consecutivamente en diferentes rectángulos y contextos de dispositivo diferentes, por ejemplo, porque se muestra simultáneamente en diferentes vistas de la pantalla.

Normalmente, el rectángulo de cliente y el contexto del dispositivo pasados a ITextServices::TxDraw no deben almacenarse en caché, ya que esto obligaría al objeto de servicios de texto a recalcular las líneas de cada dibujo, lo que impediría el rendimiento. En su lugar, el objeto de servicios de texto podría almacenar en caché la información que se calcula para un rectángulo de cliente específico y el contexto del dispositivo (por ejemplo, saltos de línea). Sin embargo, en la siguiente llamada a ITextServices::TxDraw, se debe comprobar la validez de la información almacenada en caché antes de que se use y se debe volver a generar la información actualizada, si es necesario.

Además, tenga mucho cuidado cuando el control esté activo en contexto. Este problema es aún más complejo, ya que se puede llamar a ITextServices::TxDraw para representar otras vistas que la que está activa en contexto. Es decir, es posible que el rectángulo de cliente pasado a ITextServices::TxDraw no sea el mismo que el activo (pasado a ITextServices::OnTxInPlaceActivate y obtenido a través de TxGetClientRect en el host).

Requisitos

   
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado textserv.h
Archivo DLL Msftedit.dll

Consulte también

Conceptual

DVTARGETDEVICE

ITextServices

IViewObject::Draw

OnTxInPlaceActivate

Otros recursos

RECT

RECTL

Referencia

TxGetClientRect

TxGetExtent

Controles de edición enriquecida sin ventanas