ExtTextOutW-Funktion (wingdi.h)
Die ExtTextOut-Funktion zeichnet Text mit der aktuell ausgewählten Schriftart, Hintergrundfarbe und Textfarbe. Sie können optional Dimensionen angeben, die für Beschneidungen, Deckkraft oder beides verwendet werden sollen.
Syntax
BOOL ExtTextOutW(
[in] HDC hdc,
[in] int x,
[in] int y,
[in] UINT options,
[in] const RECT *lprect,
[in] LPCWSTR lpString,
[in] UINT c,
[in] const INT *lpDx
);
Parameter
[in] hdc
Ein Handle für den Gerätekontext.
[in] x
Die x-Koordinate in logischen Koordinaten des Bezugspunkts, der zum Positionieren der Zeichenfolge verwendet wird.
[in] y
Die y-Koordinate in logischen Koordinaten des Bezugspunkts, der zum Positionieren der Zeichenfolge verwendet wird.
[in] options
Gibt an, wie das anwendungsdefinierte Rechteck verwendet wird. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.
Wert | Bedeutung |
---|---|
|
Der Text wird an das Rechteck gekappt. |
|
Das lpString-Array bezieht sich auf ein Von GetCharacterPlacement zurückgegebenes Array und sollte direkt von GDI analysiert werden, da keine weitere sprachspezifische Verarbeitung erforderlich ist. Die Glyphenindizierung gilt nur für TrueType-Schriftarten, aber das Flag kann für Bitmap- und Vektorschriftarten verwendet werden, um anzugeben, dass keine weitere Sprachverarbeitung erforderlich ist und GDI die Zeichenfolge direkt verarbeiten sollte. Beachten Sie, dass alle Glyphenindizes 16-Bit-Werte sind, obwohl davon ausgegangen wird, dass es sich bei der Zeichenfolge um ein Array von 8-Bit-Werten für Rasterschriftarten handelt.
Für ExtTextOutW werden die Glyphenindizes in einer Metadatei gespeichert. Um jedoch die richtigen Zeichen anzuzeigen, muss die Metadatei mit derselben Schriftart wiedergegeben werden. Für ExtTextOutA werden die Glyphenindizes nicht gespeichert. |
|
Ist für das System reserviert. Wenn eine Anwendung dieses Flag festlegt, verliert sie die internationale Skriptunterstützung, und in einigen Fällen wird möglicherweise überhaupt kein Text angezeigt. |
|
Um Zahlen anzuzeigen, verwenden Sie europäische Ziffern. |
|
Verwenden Sie zum Anzeigen von Zahlen die für das Gebietsschema geeigneten Ziffern. |
|
Die aktuelle Hintergrundfarbe sollte verwendet werden, um das Rechteck zu füllen. |
|
Wenn dies festgelegt ist, enthält das Array, auf das von lpDx verwiesen wird, Wertepaare. Der erste Wert jedes Paares ist wie üblich der Abstand zwischen den Ursprüngen benachbarter Zeichenzellen, der zweite Wert ist jedoch die Verschiebung entlang der vertikalen Richtung der Schriftart. |
|
Sprachausgabe "Naher Osten" von Windows: Wenn dieser Wert angegeben ist und eine hebräische oder arabische Schriftart im Gerätekontext ausgewählt ist, wird die Zeichenfolge in der Lesereihenfolge von rechts nach links ausgegeben. Wenn dieser Wert nicht angegeben wird, wird die Zeichenfolge in der Reihenfolge von links nach rechts ausgegeben. Der gleiche Effekt kann durch Festlegen des TA_RTLREADING-Werts in SetTextAlign erzielt werden. Dieser Wert wird aus Gründen der Abwärtskompatibilität beibehalten. |
Die werte ETO_GLYPH_INDEX und ETO_RTLREADING können nicht zusammen verwendet werden. Da ETO_GLYPH_INDEX impliziert, dass die gesamte Sprachverarbeitung abgeschlossen wurde, ignoriert die Funktion das ETO_RTLREADING-Flag, falls ebenfalls angegeben.
[in] lprect
Ein Zeiger auf eine optionale RECT-Struktur , die die Dimensionen eines Rechtecks in logischen Koordinaten angibt, das zum Ausschneiden, Decken oder beides verwendet wird.
[in] lpString
Ein Zeiger auf eine Zeichenfolge, die den zu zeichnenden Text angibt. Die Zeichenfolge muss nicht mit Null beendet werden, da cbCount die Länge der Zeichenfolge angibt.
[in] c
Die Länge der Zeichenfolge , auf die lpString verweist.
Dieser Wert darf 8192 nicht überschreiten.
[in] lpDx
Ein Zeiger auf ein optionales Array von Werten, die den Abstand zwischen den Ursprüngen benachbarter Zeichenzellen angeben. Logische Einheiten lpDx[i] trennen beispielsweise die Ursprünge der Zeichenzelle i und der Zeichenzelle i + 1.
Rückgabewert
Wenn die Zeichenfolge gezeichnet wird, ist der Rückgabewert nonzero. Wenn die ANSI-Version von ExtTextOut jedoch mit ETO_GLYPH_INDEX aufgerufen wird, gibt die Funktion TRUE zurück, obwohl die Funktion nichts tut.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.
Hinweise
Die aktuellen Textausrichtungseinstellungen für den angegebenen Gerätekontext bestimmen, wie der Referenzpunkt zum Positionieren des Texts verwendet wird. Die Textausrichtungseinstellungen werden durch Aufrufen der GetTextAlign-Funktion abgerufen. Die Einstellungen für die Textausrichtung werden durch Aufrufen der SetTextAlign-Funktion geändert. Sie können die folgenden Werte für die Textausrichtung verwenden. Es kann nur ein Flag ausgewählt werden, das sich auf die horizontale und vertikale Ausrichtung auswirkt. Darüber hinaus kann nur eines der beiden Flags ausgewählt werden, die die aktuelle Position ändern.
Wenn der lpDx-ParameterNULL ist, verwendet die ExtTextOut-Funktion den Standardabstand zwischen Zeichen. Die Zeichenzellenherkunft und der Inhalt des Arrays, auf das der lpDx-Parameter verweist, werden in logischen Einheiten angegeben. Ein Zeichenzellenursprung wird als die linke obere Ecke der Zeichenzelle definiert.
Standardmäßig wird die aktuelle Position von dieser Funktion nicht verwendet oder aktualisiert. Eine Anwendung kann jedoch die SetTextAlign-Funktion aufrufen, wobei der fMode-Parameter auf TA_UPDATECP festgelegt ist, damit das System die aktuelle Position jedes Mal verwenden und aktualisieren kann, wenn die Anwendung ExtTextOut für einen angegebenen Gerätekontext aufruft. Wenn dieses Flag festgelegt ist, ignoriert das System die X - und Y-Parameter bei nachfolgenden ExtTextOut-Aufrufen .
Für die ANSI-Version von ExtTextOut verfügt das lpDx-Array über die gleiche Anzahl von INT-Werten wie Bytes in lpString. Bei DBCS-Zeichen können Sie den dx in den lpDx-Einträgen zwischen dem Lead-Byte und dem Trail-Byte verteilen, solange die Summe der beiden Bytes dem gewünschten dx entspricht. Für DBCS-Zeichen mit der Unicode-Version von ExtTextOut erhält jede Unicode-Glyphe einen einzelnen pdx-Eintrag .
Beachten Sie, dass die alpDx-Werte von 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.
ExtTextOut verwendet bei Bedarf Uniscribe , was zu einem Schriftartfallback führt. Das ETO_IGNORELANGUAGE-Flag verhindert dieses Verhalten und sollte nicht übergeben werden.
Darüber hinaus führt ExtTextOut vor dem Übergang in den Kernelmodus internes Batching von Aufrufen aus, um einige der Leistungsprobleme beim Abwägen der Verwendung von PolyTextOut und ExtTextOut zu verringern.
Tipp
ExtTextOut wird dringend gegenüber PolyTextOut für die moderne Entwicklung empfohlen, da die Anzeige verschiedener Sprachen verarbeitet werden kann.
Beispiele
Ein Beispiel finden Sie unter "Festlegen von Schriftarten für Menu-Item Textzeichenfolgen" unter Verwenden von Menüs.
Hinweis
Der wingdi.h-Header definiert ExtTextOut als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch 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 |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wingdi.h (windows.h einschließen) |
Bibliothek | Gdi32.lib |
DLL | Gdi32.dll |
Weitere Informationen
Schriftart- und Textfunktionen