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.

Wert Bedeutung
DVASPECT_CONTENT
Rendert ein Bildschirmbild des Textinhalts im hdcDraw-Gerätekontext .

Die Parameter hicTargetDev und ptd geben Informationen zum Zielgerätekontext (sofern vorhanden) (normalerweise ein Drucker).

DVASPECT_DOCPRINT
Rendert das Objekt im hdcDraw-Gerätekontext , als würde es auf einen Drucker gedruckt. Daher kann das Textdienstobjekt für den Drucker optimiert werden (z. B. die Hintergrundfarbe nicht malen, wenn sie weiß ist). Außerdem sollten bestimmte bildschirmspezifische Elemente (z. B. die Auswahl) nicht gerendert werden.

ITextServices::TxDraw sollte das lprcBounds-Rechteck ab der aktuellen Bildlaufposition rendern.

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
TXTVIEW_ACTIVE
Zeichnen Sie die aktive Inplace-Ansicht.
TXTVIEW_INACTIVE
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

DVTARGETDEVICE

ITextServices

IViewObject::D raw

OnTxInPlaceActivate

Andere Ressourcen

RECT

RECTL

Referenz

TxGetClientRect

TxGetExtent

Fensterlose Rich-Edit-Steuerelemente