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 |
---|---|
|
Verwenden Sie englische Metrikeinheiten (EMUs) anstelle von Pixeln als Maßeinheiten (beide Arten) für die Parameter dieser Methode. |
|
Ä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. |
|
Ändern Sie die Größe des Steuerelements so, dass es eingezogenen Inhalt entspricht. |
|
Ändern Sie die Größe des Steuerelements so, dass es eingezogenen Inhalt und nachfolgenden Leerzeichen entspricht. |
|
Ändern Sie die Größe des Steuerelements so, dass es nicht mehr angezeigten Inhalten und nachfolgenden Leerzeichen entspricht. |
|
Geben Sie für ein Nur-Text-Steuerelement die Höhe des endgültigen Wagenrücklaufs beim Berechnen der Größe an. |
|
Ä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 |
---|---|
|
Die richtige Größe kann nicht ermittelt werden. |
|
Mindestens ein Argument ist ungültig. |
|
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 |