GetTextExtentExPointA-Funktion (wingdi.h)
Die GetTextExtentExPoint--Funktion ruft die Anzahl der Zeichen in einer angegebenen Zeichenfolge ab, die in ein angegebenes Leerzeichen passt und ein Array mit dem Textumfang für jedes dieser Zeichen ausfüllt. (Ein Textbereich ist der Abstand zwischen dem Anfang des Leerzeichens und einem Zeichen, das in das Leerzeichen passt.) Diese Informationen sind nützlich für Wörterumbruchberechnungen.
Syntax
BOOL GetTextExtentExPointA(
[in] HDC hdc,
[in] LPCSTR lpszString,
[in] int cchString,
[in] int nMaxExtent,
[out] LPINT lpnFit,
[out] LPINT lpnDx,
[out] LPSIZE lpSize
);
Parameter
[in] hdc
Ein Handle für den Gerätekontext.
[in] lpszString
Ein Zeiger auf die mit Null beendete Zeichenfolge, für die Soweit abgerufen werden soll.
[in] cchString
Die Anzahl der Zeichen in der Zeichenfolge, auf die der parameter lpszStr verweist. Für einen ANSI-Aufruf gibt er die Zeichenfolgenlänge in Bytes und für einen Unicode an, der die Zeichenfolgenlänge in WORDs angibt. Beachten Sie, dass für die ANSI-Funktion Zeichen in SBCS-Codeseiten jeweils ein Byte verwendet werden, während die meisten Zeichen in DBCS-Codeseiten zwei Byte beanspruchen; für die Unicode-Funktion sind die derzeit definierten Unicode-Zeichen (die im Basic Multilingual Plane (BMP)) ein WORT sind, während Unicode-Surrogate zwei WORDs sind.
[in] nMaxExtent
Die maximal zulässige Breite in logischen Einheiten der formatierten Zeichenfolge.
[out] lpnFit
Ein Zeiger auf eine ganze Zahl, die eine Anzahl der maximalen Anzahl von Zeichen empfängt, die in das durch den nMaxExtent Parameter angegebene Leerzeichen passen. Wenn der parameter lpnFitNULList, wird der nMaxExtent Parameter ignoriert.
[out] lpnDx
Ein Zeiger auf ein Array ganzzahliger Zahlen, die teilweise Zeichenfolgenausdehnungen empfängt. Jedes Element im Array gibt den Abstand zwischen dem Anfang der Zeichenfolge und einem der Zeichen, die in das durch den nMaxExtent Parameter angegebene Leerzeichen passen. Dieses Array muss mindestens so viele Elemente wie zeichen aufweisen, die durch den cchString Parameter angegeben werden, da das gesamte Array intern verwendet wird. Die Funktion füllt das Array mit gültigen Ausdehnungen für so viele Zeichen wie durch den parameter lpnFit angegeben. Alle Werte im rest des Arrays sollten ignoriert werden. Wenn alpDx-NULL-ist, berechnet die Funktion keine teilweisen Zeichenfolgenbreiten.
Bei komplexen Skripts, bei denen eine Abfolge von Zeichen durch eine beliebige Anzahl von Glyphen dargestellt werden kann, entsprechen die Werte im alpDx Array bis zur zahl, die durch den parameter lpnFit mit Codepunkten angegeben wird. Auch hier sollten Sie die übrigen Werte im alpDx Array ignorieren.
[out] lpSize
Ein Zeiger auf eine SIZE Struktur, die die Dimensionen der Zeichenfolge in logischen Einheiten empfängt. Dieser Parameter kann nicht NULL-werden.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert null.
Bemerkungen
Wenn sowohl die parameter lpnFit als auch alpDxNULLsind, entspricht das Aufrufen der GetTextExtentExPoint Funktion dem Aufrufen der GetTextExtentPoint-Funktion.
Für die ANSI-Version von GetTextExtentExPoint-weist das lpDx Array dieselbe Anzahl von INT-Werten auf, wie byte in lpString-. Die INT-Werte, die den beiden Byte eines DBCS-Zeichens entsprechen, sind jeweils das Ausmaß des gesamten zusammengesetzten Zeichens.
Beachten Sie, dass die alpDx- Werte für GetTextExtentExPoint- nicht mit den lpDx- Werten für ExtTextOut-identisch sind. Um die alpDx- Werte in lpDx-zu verwenden, müssen Sie sie zuerst verarbeiten.
Wenn diese Funktion den Textumfang zurückgibt, wird davon ausgegangen, dass der Text horizontal ist, d. h., dass die Escapezeichen immer 0 sind. Dies gilt sowohl für die horizontale als auch für die vertikale Größe des Texts. Auch wenn Sie eine Schriftart verwenden, die ein Nichtzero-Escapement angibt, verwendet diese Funktion nicht den Winkel, während der Textumfang berechnet wird. Die App muss sie explizit konvertieren. Wenn der Grafikmodus jedoch auf GM_ADVANCED festgelegt ist und die Zeichenausrichtung 90 Grad von der Druckausrichtung beträgt, folgen die von dieser Funktion zurückgegebenen Werte nicht dieser Regel. Wenn die Zeichenausrichtung und die Druckausrichtung für eine bestimmte Zeichenfolge übereinstimmen, gibt diese Funktion die Dimensionen der Zeichenfolge in der SIZE Struktur als { cx : 116, cy : 18 } zurück. Wenn die Zeichenausrichtung und die Druckausrichtung für dieselbe Zeichenfolge 90 Grad auseinander liegen, gibt diese Funktion die Abmessungen der Zeichenfolge in der SIZE Struktur als { cx : 18, cy : 116 } zurück.
Diese Funktion gibt den Umfang jedes aufeinander folgenden Zeichens in einer Zeichenfolge zurück. Wenn diese auf logische Einheiten gerundet werden, erhalten Sie unterschiedliche Ergebnisse als das, was von der GetCharWidthzurückgegeben wird, die die Breite jedes einzelnen Zeichens zurückgibt, das auf logische Einheiten gerundet wird.
Anmerkung
Der wingdi.h-Header definiert GetTextExtentExPoint als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | wingdi.h (enthalten Windows.h) |
Library | Gdi32.lib |
DLL- | Gdi32.dll |
Siehe auch
Schriftart- und Textfunktionen