ITextServices2::TxGetNaturalSize2-Methode (textserv.h)

Ändert die Größe eines Steuerelements so, dass es seinem Inhalt entsprechend entspricht. Diese Methode ähnelt TxGetNaturalSize, ruft aber auch den Aufstieg der obersten Textzeile ab.

Syntax

HRESULT TxGetNaturalSize2(
  DWORD          dwAspect,
  HDC            hdcDraw,
  HDC            hicTargetDev,
  DVTARGETDEVICE *ptd,
  DWORD          dwMode,
  const SIZEL    *psizelExtent,
  LONG           *pwidth,
  LONG           *pheight,
  LONG           *pascent
);

Parameter

dwAspect

Typ: DWORD

Der Aspekt für die Zeichnung. Es kann sich um einen der Werte aus der DVASPECT-Enumeration handeln.

hdcDraw

Typ: HDC

Der Gerätekontext, in den zeichnung erfolgt.

hicTargetDev

Typ: HDC

Der Gerätekontext, für den Text formatiert werden soll (also für WYSIWYG).

ptd

Typ: DVTARGETDEVICE*

Weitere Informationen zum Zielgerät.

dwMode

Typ: DWORD

Der Typ der angeforderten Anpassung. Dies kann eine der folgenden Sein.

Wert Bedeutung
TXTNS_EMU
Verwenden Sie englische Metrikeinheiten (EMUs) anstelle von Pixeln als Maßeinheiten (beide Arten) für die Parameter dieser Methode.
TXTNS_FITTOCONTENT
Ändern Sie die Größe des Steuerelements so, dass es dem gesamten Text entspricht, indem Sie den Text auf die übergebene Breite formatieren. Das Textdienstobjekt gibt die Höhe des gesamten Texts und die Breite der breitesten Zeile zurück.

Dies sollte beispielsweise geschehen, wenn der Benutzer auf eine der Handles des Steuerelements doppelklicken.

TXTNS_FITTOCONTENT2
Ändern Sie die Größe des Steuerelements so, dass es eingezogenen Inhalt entspricht.
TXTNS_FITTOCONTENT3
Ändern Sie die Größe des Steuerelements so, dass es eingezogenen Inhalt und nachfolgenden Leerzeichen entspricht.
TXTNS_FITTOCONTENTWSP
Ändern Sie die Größe des Steuerelements so, dass es nicht mehr angezeigten Inhalten und nachfolgenden Leerzeichen entspricht.
TXTNS_INCLUDELASTLINE
Geben Sie für ein Nur-Text-Steuerelement die Höhe des endgültigen Wagenrücklaufs beim Berechnen der Größe an.
TXTNS_ROUNDTOLINE
Ändern Sie die Größe des Steuerelements, um eine integrale Anzahl von Zeilen anzuzeigen (keine Zeile ist abgeschnitten). Formatieren Sie genügend Text, um die übergebene Breite und Höhe auszufüllen, und geben Sie dann eine Höhe zurück, die auf die nächstgelegene Zeilengrenze gerundet ist.
Hinweis Die übergebene und zurückgegebene Breite und Höhe entsprechen dem Ansichtsrechteck. Der Host sollte sich nach Bedarf wieder an das Clientrechteck anpassen. Da diese Werte die Ausdehnung des Textobjekts darstellen, werden sie in HIMETRIC-Koordinaten ein- und ausgegeben (jede HIMETRIC-Einheit ist 0,01 Millimeter), und die Messung enthält keinen Zoomfaktor. Eine Erläuterung des Zoomfaktors finden Sie unter TxGetExtent.
 

psizelExtent

Typ: const SIZEL*

Größen von Ausdehnungen (in HIMETRIC-Einheiten), die zum Zoomen verwendet werden sollen.

pwidth

Typ: LONG*

Die Breite für die durch dwMode definierte Passform.

pheight

Typ: LONG*

Die Höhe für die durch dwMode definierte Passform.

pascent

Typ: LONG*

Empfängt bei einzeiligen Steuerelementen den Aufstieg (Einheiten über der Baseline) von Zeichen in der oberen Textzeile.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert S_OK.

Wenn Textdienste das Objekt nicht aktivieren konnten, ist der Rückgabewert einer der folgenden HRESULT-Codes . Weitere Informationen zu COM-Fehlercodes finden Sie unter Fehlerbehandlung in COM.

Rückgabecode Beschreibung
E_FAIL
Die richtige Größe kann nicht ermittelt werden.
E_INVALIDARG
Mindestens ein Argument ist ungültig.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

Hinweise

Die ersten vier Parameter ähneln gleichwertigen Parametern in ITextServices::TxDraw und geben dieselben Informationen. Wenn die Zeilen neu berechnet werden müssen, verwendet TxGetNaturalSize2 diese Werte auf die gleiche Weise wie in ITextServices::TxDraw.

Die Parameter pwidth und pheight sind Ein-/Ausparameter. Der Host übergibt die vorläufige Breite und Höhe der natürlichen Ausdehnung des Textobjekts. Das Textdienstobjekt vergleicht diese Werte mit dem aktuellen zwischengespeicherten Zustand, und wenn sich dies unterscheidet, werden die Zeilen neu berechnet. Anschließend wird die natürliche Größe berechnet und zurückgegeben, wie von dwMode angegeben.

Beispiele

Das folgende Beispiel zeigt, wie der psizelExtent-Parameter für auf einen Zoomfaktor von 1:1 initialisiert wird. Die Auslassungspunkte geben Code an, den Sie angeben müssen.


LONG dxpi = GetDeviceCaps(hdc, LOGPIXELSX);
LONG dypi = GetDeviceCaps(hdc, LOGPIXELSY);
LONG dyAscent = 0;
LONG dx = ... ;  // Text image width, in pixels 
LONG dy = ... ;  // Text image height, in pixels 
SIZEL sizel;     // dx and dy, in HIMETRIC

ITextServices2 *pserv = ... ; // Interface for single-line control

sizel.cx = MulDiv(dx, HIMETRIC_PER_INCH, dxpi); 
sizel.cy = MulDiv(dy, HIMETRIC_PER_INCH, dypi);

pserv->TxGetNaturalSize2(DVASPECT_DOCPRINT, hdc, hdcNil, pNil,
    TXTNS_FITTOCONTENT, &sizel, &dx, &dy, &dyAscent))) 

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile textserv.h
DLL Msftedit.dll

Weitere Informationen

ITextServices2