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.
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 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
Altre risorse
Riferimento