ITextServices::TxDraw-Methode (textserv.h)
Zeichnet das Textdienstobjekt.
Syntax
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
);
Parameter
[in] dwDrawAspect
Typ: DWORD
Gibt den zu zeichnenden Aspekt an, d. h., wie das Objekt dargestellt werden soll. Der Zeichnungsaspekt kann einer der folgenden Werte sein.
lindex
Typ: LONG
Wird nicht unterstützt.
[in] pvAspect
Typ: void*
Informationen zu Zeichnungsoptimierungen.
[in] ptd
Typ: DVTARGETDEVICE*
Das Zielgerät.
[in] hdcDraw
Typ: HDC
Rendern des Gerätekontexts.
[in] hicTargetDev
Typ: HDC
Zielinformationskontext.
[in] lprcBounds
Typ: LPCRECTL
Das umgebende Rechteck (Clientrechteck).
[in] lprcWBounds
Typ: LPCRECTL
Das Ausschneiderechteck für Metadateien.
[in] lprcUpdate
Typ: LPRECT
Der Updatebereich in lprcBounds.
pfnContinue
Typ: BOOL CALLBACK*
Wird nicht unterstützt.
dwContinue
Typ: DWORD
Parameter, der übergeben werden soll, um die Funktion fortzusetzen.
lViewId
Typ: LONG
Gibt die zu zeichnende Ansicht an.
Wert | Bedeutung |
---|---|
|
Zeichnen Sie die aktive Inplace-Ansicht. |
|
Zeichnen Sie eine andere Ansicht als die aktive Inplace-Ansicht; Beispielsweise eine Druckvorschau. |
Rückgabewert
Typ: HRESULT
Der Rückgabewert wird in der Regel S_OK.
Hinweise
Diese Methode rendert das Textdienstobjekt. Sie akzeptiert dieselben Parameter wie die entsprechende IViewObject::D raw-Methode in OLE, mit den zusätzlichen Parametern lprcUpdate und lViewId . Sie kann verwendet werden, während der Host aktiv oder inaktiv ist.
Der lprcBounds-Parameter gibt das zu renderende Rechteck an, das auch als Clientrechteck bezeichnet wird. Dieses Rechteck stellt die Position und den Umfang des gesamten Bilds des zu zeichnenden Textdienstobjekts dar. Sie wird im logischen Koordinatensystem von hdcDraw ausgedrückt. Wenn lprcBoundsNULL ist, muss das Steuerelement aktiv sein. In diesem Fall sollte das Textdienstobjekt die direkte aktive Ansicht rendern (d. a. das Clientrechteck, das durch Aufrufen von TxGetClientRect auf dem Host abgerufen werden kann).
Wenn der lprcUpdate-Parameter nicht NULL ist, wird das Zu aktualisierende Rechteck innerhalb dieses Clientrechtecks im logischen Koordinatensystem von hdcDraw zugewiesen. Wenn lprcUpdateNULL ist, sollte das gesamte Clientrechteck gezeichnet werden.
Das Textdienstobjekt sollte mit dem entsprechenden Zoomfaktor gerendert werden, der aus dem Clientrechteck und der von TxGetExtent angegebenen nativen Größe abgerufen werden kann. Eine Erläuterung des Zoomfaktors finden Sie unter TxGetExtent.
Allgemeine Kommentare zu OLE-Hosts und ITextServices::TxDraw (auch für ITextServices::OnTxSetCursor und ITextServices::TxQueryHitPoint):
Ein OLE-Host kann die ITextServices::TxDraw-Methode jederzeit mit jedem Rendergerätekontext oder Clientrechteck aufrufen. Ein OLE-Objekt, das inaktiv ist, behält nur eine Ausdehnung bei. Um das Rechteck abzurufen, in dem gerendert werden soll, ruft der Host die IViewObject::D raw-Methode auf. Dieses Rechteck ist nur für den Bereich dieser Methode gültig. So kann dasselbe Steuerelement nacheinander in verschiedenen Rechtecken und verschiedenen Gerätekontexten gerendert werden, z. B. weil es gleichzeitig in verschiedenen Ansichten auf dem Bildschirm angezeigt wird.
Normalerweise sollten das an ITextServices::TxDraw übergebene Clientrechteck und der Gerätekontext nicht zwischengespeichert werden, da das Textdienstobjekt dadurch erzwingen würde, Zeilen für jede Zeichnung neu zu berechnen, was die Leistung beeinträchtigen würde. Stattdessen könnte das Textdiensteobjekt die Informationen zwischenspeichern, die für ein bestimmtes Clientrechteck und einen bestimmten Gerätekontext (z. B. Zeilenumbrüche) berechnet werden. Beim nächsten Aufruf von ITextServices::TxDraw sollte jedoch die Gültigkeit der zwischengespeicherten Informationen überprüft werden, bevor sie verwendet werden, und aktualisierte Informationen sollten bei Bedarf neu generiert werden.
Achten Sie auch darauf, wenn die Steuerung aktiv ist. Dieses Problem ist noch komplexer, da ITextServices::TxDraw weiterhin aufgerufen werden kann, um andere Ansichten zu rendern als die, die direkt aktiv ist. Anders ausgedrückt: Das an ITextServices::TxDraw übergebene Clientrechteck ist möglicherweise nicht mit dem aktiven Rechteck identisch (wird an ITextServices::OnTxInPlaceActivate übergeben und über TxGetClientRect auf dem Host abgerufen).
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | textserv.h |
DLL | Msftedit.dll |
Siehe auch
Konzept
Andere Ressourcen
Referenz