Metodo ITextServices::TxDraw (textserv.h)

Disegna l'oggetto servizi di testo.

Sintassi

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
);

Parametri

[in] dwDrawAspect

Tipo: DWORD

Specifica l'aspetto da disegnare, vale a dire la modalità con cui l'oggetto deve essere rappresentato. L'aspetto di disegno può essere uno dei valori seguenti.

Valore Significato
DVASPECT_CONTENT
Esegue il rendering di un'immagine dello schermo del contenuto di testo nel contesto di dispositivo hdcDraw .

I parametri hicTargetDev e ptd forniscono informazioni sul contesto del dispositivo di destinazione, se presenti (in genere una stampante).

DVASPECT_DOCPRINT
Esegue il rendering dell'oggetto nel contesto di dispositivo hdcDraw come se fosse stampato in una stampante. Di conseguenza, l'oggetto servizi di testo può essere ottimizzato per la stampante (ad esempio, non disegnare il colore di sfondo, se bianco). Inoltre, non deve essere eseguito il rendering di alcuni elementi specifici dello schermo, ad esempio la selezione.

ITextServices::TxDraw deve eseguire il rendering del rettangolo lprcBounds , a partire dalla posizione di scorrimento corrente.

lindex

Tipo: LONG

Non supportato.

[in] pvAspect

Tipo: void*

Informazioni per le ottimizzazioni del disegno.

[in] ptd

Tipo: DVTARGETDEVICE*

Dispositivo di destinazione

[in] hdcDraw

Tipo: HDC

Rendering del contesto del dispositivo.

[in] hicTargetDev

Tipo: HDC

Contesto delle informazioni di destinazione.

[in] lprcBounds

Tipo: LPCRECTL

Rettangolo delimitatore (client).

[in] lprcWBounds

Tipo: LPCRECTL

Rettangolo di ritaglio per i metafile.

[in] lprcUpdate

Tipo: LPRECT

Area di aggiornamento all'interno di lprcBounds.

pfnContinue

Tipo: BOOL CALLBACK*

Non supportato.

dwContinue

Tipo: DWORD

Parametro da passare per continuare la funzione.

lViewId

Tipo: LONG

Specifica la visualizzazione da disegnare.

Valore Significato
TXTVIEW_ACTIVE
Disegnare la visualizzazione attiva in posizione.
TXTVIEW_INACTIVE
Disegnare una visualizzazione diversa dalla visualizzazione attiva in posizione; ad esempio un'anteprima di stampa.

Valore restituito

Tipo: HRESULT

Il valore restituito è in genere S_OK.

Commenti

Questo metodo esegue il rendering dell'oggetto servizi di testo. Accetta gli stessi parametri del metodo IViewObject::D raw corrispondente in OLE, con i parametri lprcUpdate e lViewId aggiuntivi. Può essere usato mentre l'host è attivo o inattivo.

Il parametro lprcBounds fornisce il rettangolo di cui eseguire il rendering, detto anche rettangolo client. Questo rettangolo rappresenta la posizione e l'estensione dell'intera immagine dell'oggetto servizi di testo da disegnare. Viene espresso nel sistema di coordinate logico di hdcDraw. Se lprcBounds è NULL , il controllo deve essere attivo. In questo caso, l'oggetto servizi di testo deve eseguire il rendering della visualizzazione attiva sul posto, ovvero il rettangolo client che può essere ottenuto chiamando TxGetClientRect nell'host.

Se il parametro lprcUpdate non è NULL, fornisce il rettangolo da aggiornare all'interno del rettangolo client, nel sistema di coordinate logico di hdcDraw. Se lprcUpdate è NULL, è necessario disegnare l'intero rettangolo client.

Il rendering dell'oggetto servizi di testo deve essere eseguito con il fattore di zoom appropriato, che può essere ottenuto dal rettangolo client e dalle dimensioni native specificate da TxGetExtent. Per una descrizione del fattore di zoom, vedere TxGetExtent.

Commenti generali sugli host OLE e ITextServices::TxDraw (anche per ITextServices::OnTxSetCursor e ITextServices::TxQueryHitPoint):

Un host OLE può chiamare il metodo ITextServices::TxDraw in qualsiasi momento con qualsiasi contesto di dispositivo di rendering o rettangolo client. Un oggetto OLE inattivo mantiene solo un extent. Per ottenere il rettangolo in cui eseguire il rendering, l'host chiama il metodo IViewObject::D raw . Questo rettangolo è valido solo per l'ambito di tale metodo. Di conseguenza, il rendering dello stesso controllo può essere eseguito consecutivamente in rettangoli diversi e in contesti di dispositivo diversi, ad esempio, perché viene visualizzato contemporaneamente in visualizzazioni diverse sullo schermo.

In genere, il rettangolo client e il contesto di dispositivo passati a ITextServices::TxDraw non devono essere memorizzati nella cache, perché in questo modo l'oggetto servizi di testo potrebbe ricalcolare le righe per ogni disegno, il che impedirebbe le prestazioni. L'oggetto servizi di testo potrebbe invece memorizzare nella cache le informazioni calcolate per un rettangolo client specifico e un contesto di dispositivo, ad esempio interruzioni di riga. Nella chiamata successiva a ITextServices::TxDraw, tuttavia, la validità delle informazioni memorizzate nella cache deve essere verificata prima dell'uso e le informazioni aggiornate devono essere rigenerate, se necessario.

Inoltre, prestare molta attenzione quando il controllo è attivo sul posto. Questo problema è ancora più complesso perché ITextServices::TxDraw può comunque essere chiamato per eseguire il rendering di altre viste rispetto a quella attiva sul posto. In altre parole, il rettangolo client passato a ITextServices::TxDraw potrebbe non essere uguale a quello attivo (passato a ITextServices::OnTxInPlaceActivate e ottenuto tramite TxGetClientRect nell'host).

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione textserv.h
DLL Msftedit.dll

Vedi anche

Informazioni concettuali

DVTARGETDEVICE

ITextServices

IViewObject::D raw

OnTxInPlaceActivate

Altre risorse

RECT

RECTL

Riferimento

TxGetClientRect

TxGetExtent

Controlli Rich Edit senza finestre