Bearbeiten von Steuerelementtextvorgängen
Das System verarbeitet automatisch alle vom Benutzer initiierten Textvorgänge und benachrichtigt die Anwendung, wenn die Vorgänge abgeschlossen sind.
In den folgenden Themen werden benutzerinitiierte Textvorgänge und die Antwort der Anwendung erläutert:
- Auswählen eines Steuerelements zum Bearbeiten
- Festlegen und Abrufen von Text
- Text auswählen
- Ersetzen von Text
- Ändern der schriftart, die von einem Bearbeitungssteuerelement verwendet wird
- Ausschneiden von Kopiervorgängen und -löschen
- Text ändern
- Einschränken von benutzerseitig eingegebenen Text
- Zeichen- und Zeilenvorgänge
- Scrollen von Text in einem Bearbeitungssteuerelement
- Festlegen von Tabstopps und Rändern
- Verbergen von Benutzereingaben
- Verwenden ganzzahliger Zahlen
- Rückgängigmachen von Textvorgängen
- Behandeln von Wordwrap- und Zeilenumbrüchen
- Abrufen von Punkten und Zeichen
- Automatische Vervollständigung von Zeichenfolgen
- Komplexe Skripts in Steuerelementen bearbeiten
Auswählen eines Steuerelements zum Bearbeiten
Der Benutzer kann ein Bearbeitungssteuerelement auswählen, indem er mit der Maus darauf klickt oder die TAB-TASTE drückt, um zum Steuerelement zu wechseln. Die Tabulatormethode ist Teil einer vordefinierten Tastaturschnittstelle, die das System bereitstellt. Eine vollständige Beschreibung dieser Schnittstelle finden Sie unter Dialogfelder. Wenn der Benutzer ein Bearbeitungssteuerelement auswählt, gibt das System dem Steuerelement den Tastaturfokus (siehe "Tastaturfokus und Aktivierung" unter Informationen zur Tastatureingabe) und hebt den Text mithilfe des umgekehrten Videos hervor.
Festlegen und Abrufen von Text
Eine Anwendung kann den Text eines Bearbeitungssteuerelements mithilfe der SetWindowText-Funktion , der SetDlgItemText-Funktion oder durch Senden einer WM_SETTEXT-Nachricht festlegen.
Um den gesamten Text aus einem Bearbeitungssteuerelement abzurufen, verwenden Sie zuerst die GetWindowTextLength-Funktion oder die WM_GETTEXTLENGTH Nachricht, um die Größe des Puffers zu bestimmen, der für den Text erforderlich ist. Rufen Sie als Nächstes den Text mithilfe der GetWindowText-Funktion , der GetDlgItemText-Funktion oder der WM_GETTEXT Nachricht ab.
Text auswählen
Nach der Auswahl eines Bearbeitungssteuerelements kann der Benutzer text im Steuerelement mit der Maus oder der Tastatur auswählen. Eine Anwendung kann die Anfangs- und Endzeichenpositionen der aktuellen Auswahl in einem Bearbeitungssteuerelement abrufen, indem dem Steuerelement eine EM_GETSEL Nachricht gesendet wird. Der Rückgabewert für die Endposition ist um eins größer als das letzte Zeichen in der Auswahl (also die Position des ersten Zeichens nach dem letzten ausgewählten Zeichen).
Eine Anwendung kann auch Text in einem Bearbeitungssteuerelement auswählen, indem dem Steuerelement eine EM_SETSEL Nachricht mit den Anfangs- und Endzeichenindizes für die Auswahl gesendet wird. Beispielsweise kann die Anwendung EM_SETSEL mit EM_REPLACESEL verwenden, um Text aus einem Bearbeitungssteuerelement zu löschen.
Diese drei Nachrichten gelten sowohl für einzeilige als auch für mehrzeilige Bearbeitungssteuerelemente.
Ersetzen von Text
Eine Anwendung kann ausgewählten Text in einem Bearbeitungssteuerelement ersetzen, indem dem Steuerelement eine EM_REPLACESEL Nachricht durch einen Zeiger auf den Ersatztext gesendet wird. Wenn keine aktuelle Auswahl vorhanden ist, fügt EM_REPLACESEL den Ersetzungstext an der Einfügemarke ein. Die Anwendung erhält möglicherweise einen EN_ERRSPACE Benachrichtigungscode, wenn der Ersatztext den verfügbaren Arbeitsspeicher überschreitet. Diese Meldung gilt sowohl für einzeilige als auch für mehrzeilige Bearbeitungssteuerelemente.
Eine Anwendung kann EM_REPLACESEL verwenden, um einen Teil des Texts eines Bearbeitungssteuerelements oder die SetDlgItemText-Funktion zu ersetzen, um alles zu ersetzen.
Ändern der schriftart, die von einem Bearbeitungssteuerelement verwendet wird
Eine Anwendung kann die Schriftart ändern, die ein Bearbeitungssteuerelement verwendet, indem sie die WM_SETFONT Nachricht sendet. Die meisten Anwendungen tun dies beim Verarbeiten der WM_INITDIALOG Nachricht. Das Ändern der Schriftart ändert nicht die Größe des Bearbeitungssteuerelements. Anwendungen, die die WM_SETFONT Nachricht senden, müssen möglicherweise die Schriftartmetriken für den Text abrufen und die Größe des Bearbeitungssteuerelements neu berechnen. Weitere Informationen zu Schriftarten und Schriftartmetriken finden Sie unter Schriftarten und Text.
Ausschneiden von Kopiervorgängen und -löschen
Es gibt vier Meldungen zum Verschieben von Text zwischen einem Bearbeitungssteuerelement und der Zwischenablage. Die WM_COPY Meldung kopiert die aktuelle Auswahl (falls vorhanden) aus einem Bearbeitungssteuerelement in die Zwischenablage, ohne sie aus dem Bearbeitungssteuerelement zu löschen. Die WM_CUT Meldung löscht die aktuelle Auswahl (falls vorhanden) im Bearbeitungssteuerelement und kopiert den gelöschten Text in die Zwischenablage. Die WM_CLEAR Meldung löscht die aktuelle Auswahl (falls vorhanden) aus einem Bearbeitungssteuerelement, aber nicht in die Zwischenablage (es sei denn, der Benutzer hat die UMSCHALTTASTE gedrückt). Die WM_PASTE Nachricht kopiert Text aus der Zwischenablage in ein Bearbeitungssteuerelement an der Einfügemarke. Diese vier Nachrichten gelten sowohl für einzeilige als auch für mehrzeilige Bearbeitungssteuerelemente.
Microsoft Windows NT 4.0 und höher: Ein Bearbeitungssteuerelement enthält ein integriertes Kontextmenü, das dem Benutzer das Verschieben von Text zwischen dem Bearbeitungssteuerelement und der Zwischenablage erleichtert. Das Kontextmenü wird angezeigt, wenn der Benutzer mit der rechten Maustaste auf das Steuerelement klickt. Zu den Befehlen im Kontextmenü gehören Rückgängig, Ausschneiden, Kopieren, Einfügen, Löschen und Alle auswählen.
Text ändern
Der Benutzer kann Text in einem Bearbeitungssteuerelement auswählen, löschen oder verschieben. Das System verwaltet ein internes Flag für jedes Bearbeitungssteuerelement, das angibt, ob der Inhalt des Steuerelements geändert wurde. Das System löscht dieses Flag beim Erstellen des Steuerelements und legt das Flag fest, wenn der Text im Steuerelement geändert wird. Eine Anwendung kann das Änderungsflag abrufen, indem dem Steuerelement eine EM_GETMODIFY Nachricht gesendet wird. Die Anwendung kann dann das Änderungsflag festlegen oder löschen, indem dem Steuerelement eine EM_SETMODIFY Nachricht gesendet wird. Diese Meldungen gelten sowohl für einzeilige als auch für mehrzeilige Bearbeitungssteuerelemente.
Einschränken von benutzerseitig eingegebenen Text
Der Standardgrenzwert für die Textmenge, die ein Benutzer in ein Bearbeitungssteuerelement eingeben kann, beträgt 32 KB. Eine Anwendung kann den Standardgrenzwert ändern, indem dem Steuerelement eine EM_SETLIMITTEXT Nachricht gesendet wird. Diese Nachricht legt einen harten Grenzwert auf die Anzahl der Bytes fest, die der Benutzer in ein Bearbeitungssteuerelement eingeben kann, wirkt sich jedoch weder auf Text aus, der sich bereits im Steuerelement befindet, als die Nachricht gesendet wurde, noch Text, der von der SetDlgItemText-Funktion oder der WM_SETTEXT Nachricht in das Steuerelement kopiert wurde. Angenommen, die Anwendung verwendet die SetDlgItemText-Funktion , um 500 Bytes in einem Bearbeitungssteuerelement zu platzieren, und der Benutzer gibt auch 500 Bytes (insgesamt 1.000 Bytes) ein. Wenn die Anwendung dann eine EM_SETLIMITTEXT Nachricht sendet, die vom Benutzer eingegebenen Text auf 300 Bytes begrenzt, bleiben die 1.000 Bytes, die sich bereits im Bearbeitungssteuerelement befinden, dort, und der Benutzer kann keinen weiteren Text hinzufügen. Wenn die Anwendung hingegen eine EM_SETLIMITTEXT Nachricht sendet, die vom Benutzer eingegebenen Text auf 1.300 Bytes beschränkt, bleiben die 1.000 Bytes erhalten, aber der Benutzer kann 300 weitere Bytes hinzufügen.
Wenn der Benutzer die Zeichengrenze eines Bearbeitungssteuerelements erreicht, sendet das System der Anwendung eine WM_COMMAND Nachricht, die einen EN_MAXTEXT Benachrichtigungscode enthält. Dieser Benachrichtigungscode bedeutet nicht, dass der Arbeitsspeicher erschöpft ist, sondern dass die Grenze für vom Benutzer eingegebenen Text erreicht wurde; Der Benutzer kann keinen weiteren Text eingeben. Um diesen Grenzwert zu ändern, muss eine Anwendung dem Steuerelement eine neue EM_SETLIMITTEXT Nachricht mit einem höheren Grenzwert senden.
Nehmen Sie als Beispiel für die Verwendung von EM_SETLIMITTEXT und EN_MAXTEXT an, dass die Anwendung den Benutzer auf nicht mehr als vier Zeichen in einem Bearbeitungssteuerelement beschränken muss. Die Anwendung verwendet EM_SETLIMITTEXT , um einen Grenzwert für vier Zeichen anzugeben. Wenn der Benutzer versucht hat, ein fünftes Zeichen einzugeben, sendet das System einen EN_MAXTEXT Benachrichtigungscode an die Anwendung.
Zeichen- und Zeilenvorgänge
Es gibt mehrere Nachrichten, die Informationen zu den Zeichen und Zeilen in einem Bearbeitungssteuerelement zurückgeben. Die meisten Nachrichten geben einen Index zurück, in der Regel eine nullbasierte Zahl, um auf ein Zeichen oder eine Zeile zu verweisen. Beispielsweise ist in einem einzeiligen Bearbeitungssteuerelement, das n Zeichen enthält, der Zeilenindex 0, und die Zeichen werden von 0 bis n-1 indiziert. In einem mehrlineigen Bearbeitungssteuerelement, das m-Zeilen und n-Zeichen enthält, werden die Zeilen von 0 bis m-1 indiziert, und die Zeichen werden von 0 bis n-1 indiziert. Beachten Sie, dass die Zeichenindizierung Zeilenumbrüche ignoriert.
Eine Anwendung kann die Anzahl der Zeichen in einem Bearbeitungssteuerelement bestimmen, indem sie die WM_GETTEXTLENGTH Nachricht an das Bearbeitungssteuerelement sendet. Diese Nachricht gibt die Länge des Texts in Zeichen (ohne das beendende NULL-Zeichen) in einem einzeiligen oder mehrzeiligen Bearbeitungssteuerelement zurück. Die EM_LINELENGTH Nachricht gibt die Länge einer Zeile in Zeichen zurück, die durch den Zeichenindex eines Zeichens in der Zeile angegeben wird. Die zurückgegebene Länge enthält keine ausgewählten Zeichen. Eine Anwendung kann diese Nachrichten in einem einzeiligen oder mehrzeiligen Bearbeitungssteuerelement verwenden.
Die EM_GETFIRSTVISIBLELINE Nachricht gibt den nullbasierten Index der obersten sichtbaren Zeile in einem mehrzeiligen Bearbeitungssteuerelement oder den nullbasierten Index des ersten sichtbaren Zeichens in einem einzeiligen Bearbeitungssteuerelement zurück. Eine Anwendung kann eine Zeile aus einem Bearbeitungssteuerelement in einen Puffer kopieren, indem sie die EM_GETLINE Nachricht an das Bearbeitungssteuerelement sendet. Die Zeile wird durch ihren Zeilenindex angegeben, und das erste Wort des empfangenden Puffers enthält die maximale Anzahl von Bytes, die in den Puffer kopiert werden sollen. Der Rückgabewert ist die Anzahl der kopierten Bytes. Diese Nachricht kann auch in einem einzeiligen oder mehrzeiligen Bearbeitungssteuerelement verwendet werden.
Es sind eindeutige Meldungen verfügbar, um die Informationen zu einer Zeile in einem mehrzeiligen Bearbeitungssteuerelement zurückzugeben. Die EM_GETLINECOUNT Nachricht gibt die Anzahl der Zeilen in einem Bearbeitungssteuerelement zurück. Die EM_LINEFROMCHAR Nachricht gibt den Index der Zeile zurück, die einen angegebenen Zeichenindex enthält. Die EM_LINEINDEX Nachricht gibt den Index des ersten Zeichens in einer angegebenen Zeile zurück.
Scrollen von Text in einem Bearbeitungssteuerelement
Zum Implementieren des Bildlaufs in einem Bearbeitungssteuerelement können Sie die unter Bearbeiten von Steuerelementtypen und -formatvorlagen beschriebenen automatischen Bildlaufstile verwenden oder dem Bearbeitungssteuerelement explizit Bildlaufleisten hinzufügen. Um eine horizontale Bildlaufleiste hinzuzufügen, verwenden Sie die Formatvorlage WS_HSCROLL; Um eine vertikale Bildlaufleiste hinzuzufügen, verwenden Sie die Formatvorlage WS_VSCROLL. Ein Bearbeitungssteuerelement mit Bildlaufleisten verarbeitet eigene Bildlaufleistenmeldungen. Ausführliche Informationen zum Hinzufügen von Bildlaufleisten zum Bearbeiten von Steuerelementen finden Sie unter Bildlaufleisten.
Das System stellt drei Nachrichten bereit, die eine Anwendung mit Bildlaufleisten an ein Bearbeitungssteuerelement senden kann. Die EM_LINESCROLL Meldung kann ein mehrlineiges Bearbeitungssteuerelement sowohl vertikal als auch horizontal scrollen. Der Parameter lParam gibt die Anzahl der Zeilen an, die vertikal ab der aktuellen Zeile gescrollt werden sollen, und der wParam-Parameter gibt die Anzahl der Zeichen an, die horizontal gescrollt werden sollen, beginnend mit dem aktuellen Zeichen. Das Bearbeitungssteuerelement bestätigt keine horizontalen Bildlaufmeldungen, wenn es den ES_CENTER oder ES_RIGHT Stil aufweist. Die EM_LINESCROLL Meldung gilt nur für Mehrzeilenbearbeitungssteuerelemente.
Die EM_SCROLL Meldung führt einen vertikalen Bildlauf eines mehrlineigen Bearbeitungssteuerelements durch. Der wParam-Parameter gibt die Bildlaufaktion an. Die EM_SCROLL Meldung gilt nur für Mehrzeilenbearbeitungssteuerelemente. EM_SCROLL hat die gleiche Wirkung wie die WM_VSCROLL Nachricht.
Die EM_SCROLLCARET Meldung scrollt das Caret in ein Bearbeitungssteuerelement.
Festlegen von Tabstopps und Rändern
Eine Anwendung kann Tabstopps in einem mehrteiligen Bearbeitungssteuerelement mithilfe der EM_SETTABSTOPS-Meldung festlegen. (Der Standardwert für einen Tabstopp beträgt acht Zeichen.) Wenn eine Anwendung dem Bearbeitungssteuerelement Text hinzufügt, generieren Tabstoppzeichen im Text automatisch Platz bis zum nächsten Tabstopp. Die EM_SETTABSTOPS Meldung bewirkt nicht automatisch, dass das System den Text neu zeichnet. Dazu kann eine Anwendung die InvalidateRect-Funktion aufrufen. Die EM_SETTABSTOPS Meldung gilt nur für Mehrzeilenbearbeitungssteuerelemente.
Eine Anwendung kann die Breite des linken und rechten Rands für ein Bearbeitungssteuerelement mithilfe der EM_SETMARGINS-Meldung festlegen. Nach dem Senden dieser Nachricht zeichnet das System das Bearbeitungssteuerelement neu, um die neuen Randeinstellungen widerzuspiegeln. Eine Anwendung kann die Breite des linken oder rechten Rands abrufen, indem sie die EM_GETMARGINS Nachricht sendet. Standardmäßig sind die Bearbeitungssteuerelementränder gerade so breit festgelegt, dass sie den größten horizontalen Zeichenüberhang (negative ABC-Breite) für die aktuelle Schriftart aufnehmen, die im Bearbeitungssteuerelement verwendet wird.
Verbergen von Benutzereingaben
Eine Anwendung kann ein Kennwortzeichen in einem Bearbeitungssteuerelement verwenden, um Benutzereingaben zu verbergen. Wenn ein Kennwortzeichen festgelegt ist, wird es anstelle jedes Zeichens angezeigt, das der Benutzer eingibt. Wenn ein Kennwortzeichen entfernt wird, zeigt das Steuerelement die Zeichen an, die der Benutzer eingibt. Wenn die Anwendung ein einzeiliges Bearbeitungssteuerelement mit dem Stil ES_PASSWORD erstellt, ist das Standardkennwortzeichen ein Sternchen (*). Eine Anwendung kann die EM_SETPASSWORDCHAR Nachricht verwenden, um ein anderes Kennwortzeichen und die EM_GETPASSWORDCHAR Nachricht zu entfernen oder zu definieren, um das aktuelle Kennwortzeichen abzurufen. Diese Meldungen gelten nur für einzeilige Bearbeitungssteuerelemente.
Verwenden von Ganzen Zahlen
Es gibt zwei Ganzzahlkonvertierungsfunktionen für Bearbeitungssteuerelemente, die nur Zahlen enthalten. Die SetDlgItemInt-Funktion erstellt die Zeichenfolgendarstellung einer angegebenen Ganzzahl (mit oder ohne Vorzeichen) und sendet die Zeichenfolge an ein Bearbeitungssteuerelement. SetDlgItemInt gibt keinen Wert zurück. Die GetDlgItemInt-Funktion erstellt eine ganze Zahl (mit oder ohne Vorzeichen) aus ihrer Zeichenfolgendarstellung in einem Bearbeitungssteuerelement. GetDlgItemInt gibt die ganze Zahl (oder einen Fehlerwert) zurück.
Rückgängigmachen von Textvorgängen
Jedes Bearbeitungssteuerelement verwaltet ein Rückgängig-Flag, das angibt, ob eine Anwendung den letzten Vorgang für das Bearbeitungssteuerelement rückgängig machen oder rückgängig machen kann (z. B. Rückgängigmachen eines Textlöschvorgangs). Das Bearbeitungssteuerelement legt das Rückgängig-Flag fest, um anzugeben, dass der Vorgang rückgängig machen kann, und setzt ihn zurück, um anzugeben, dass der Vorgang nicht rückgängig werden kann. Eine Anwendung kann die Einstellung des Rückgängig-Flags ermitteln, indem dem Steuerelement eine EM_CANUNDO Nachricht gesendet wird.
Eine Anwendung kann den letzten Vorgang rückgängigmachen, indem dem Steuerelement eine EM_UNDO Nachricht gesendet wird. Ein Vorgang kann rückgängig gemacht werden, sofern kein anderer Bearbeitungssteuerungsvorgang zuerst erfolgt. Der Benutzer kann z. B. Text löschen, den Text ersetzen (den Löschvorgang rückgängigmachen) und dann den Text erneut löschen (Ersetzung rückgängigmachen). Die EM_UNDO Meldung gilt sowohl für einzeilige als auch für mehrzeilige Bearbeitungssteuerelemente und funktioniert immer für einzeilige Bearbeitungssteuerelemente.
Eine Anwendung kann das Rückgängig-Flag eines Bearbeitungssteuerelements zurücksetzen, indem dem Steuerelement eine EM_EMPTYUNDOBUFFER Nachricht gesendet wird. Das System setzt das Rückgängig-Flag automatisch zurück, wenn ein Bearbeitungssteuerelement eine EM_SETHANDLE - oder WM_SETTEXT-Nachricht empfängt. Die SetDlgItemText-Funktion sendet eine WM_SETTEXT Nachricht.
Behandeln von Wordwrap und Zeilenumbrüchen
Eine Anwendung kann Wordwrap-Funktionen mit mehrzeiligen Bearbeitungssteuerelementen verwenden, um das Wort oder Wortfragment zu suchen, das in die nächste Zeile umschlossen werden soll. Bei Verwendung der vom System bereitgestellten Wordwrap-Standardfunktion enden Zeilen immer an den Leerzeichen zwischen Wörtern. Eine Anwendung kann eine eigene Wordwrap-Funktion angeben, indem sie eine EditWordBreakProc Wordwrap-Funktion angibt und dem Bearbeitungssteuerelement eine EM_SETWORDBREAKPROC Nachricht sendet. Eine Anwendung kann die Adresse der aktuellen Wordwrap-Funktion abrufen, indem sie dem Steuerelement eine EM_GETWORDBREAKPROC Nachricht sendet.
Eine Anwendung kann ein mehrzeiliges Bearbeitungssteuerelement anweisen, automatisch ein weiches Zeilenumbruchzeichen (zwei Wagenrückläufe und einen Zeilenvorschub) am Ende umschlossener Textzeilen hinzuzufügen oder zu entfernen. Eine Anwendung kann dieses Feature aktivieren oder deaktivieren, indem dem Bearbeitungssteuerelement eine EM_FMTLINES Nachricht gesendet wird. Diese Meldung gilt nur für mehrzeilige Bearbeitungssteuerelemente und wirkt sich nicht auf eine Zeile aus, die mit einem harten Zeilenumbruch endet (ein Wagenrücklauf und ein vom Benutzer eingegebener Zeilenvorschub). Auch in Mehrzeilen-Bearbeitungssteuerelementen kann eine Anwendung die ES_WANTRETURN Formatvorlage angeben, um anzufordern, dass das System einen Wagenrücklauf einfügt, wenn der Benutzer die EINGABETASTE im Bearbeitungssteuerelement drückt.
Abrufen von Punkten und Zeichen
Um das Zeichen zu bestimmen, das einem angegebenen Punkt im Clientbereich eines Bearbeitungssteuerelements am nächsten kommt, senden Sie die EM_CHARFROMPOS Nachricht an das Steuerelement. Die Nachricht gibt den Zeichenindex und den Zeilenindex des Zeichens zurück, das dem Punkt am nächsten ist. Ebenso können Sie die Clientbereichkoordinaten eines angegebenen Zeichens abrufen, indem Sie die EM_POSFROMCHAR Nachricht senden. Die Nachricht gibt die x- und y-Koordinaten der oberen linken Ecke des angegebenen Zeichens zurück.
Automatische Vervollständigung von Zeichenfolgen
Die automatische Vervollständigung erweitert Zeichenfolgen, die teilweise in ein Bearbeitungssteuerelement eingegeben wurden, in vollständige Zeichenfolgen. Wenn ein Benutzer beispielsweise beginnt, eine URL im Steuerelement für die Adressbearbeitung einzugeben, das in die Symbolleiste von Windows Internet Explorer eingebettet ist, erweitert die automatische Vervollständigung die Zeichenfolge in eine oder mehrere vollständige URLs, die mit der vorhandenen Teilzeichenfolge konsistent sind. Eine partielle URL-Zeichenfolge wie "mic" kann zu "https://www.microsoft.com" oder "https://www.microsoft.com/windows". Die automatische Vervollständigung wird in der Regel mit Bearbeitungssteuerelementen oder mit Steuerelementen verwendet, die über ein eingebettetes Bearbeitungssteuerelement verfügen.
Weitere Informationen finden Sie in der Dokumentation zur IAutoComplete - und IAutoComplete2-Schnittstelle .
Komplexes Skript in Bearbeitungssteuerelementen
Ein komplexes Skript ist eine Sprache, deren gedruckte Form nicht einfach angelegt ist. Beispielsweise kann ein komplexes Skript das bidirektionale Rendering, die kontextbezogene Gestaltung von Glyphen oder das Kombinieren von Zeichen ermöglichen. Die standardmäßigen Bearbeitungssteuerelemente wurden erweitert, um mehrsprachigen Text und komplexe Skripts zu unterstützen. Dies umfasst nicht nur Eingabe und Anzeige, sondern auch die korrekte Cursorbewegung über Zeichencluster (z. B. in Thai- und Devanagari-Skript).
Eine gut geschriebene Anwendung erhält diese Unterstützung automatisch, ohne Änderungen. Auch hier sollten Sie erwägen, Unterstützung für die Leserichtung von rechts nach links und die Rechtsausrichtung hinzuzufügen. Schalten Sie in diesem Fall die erweiterten Stilflags des Bearbeitungssteuerelementfensters um, um diese Attribute zu steuern, wie im folgenden Beispiel gezeigt.
// ID_EDITCONTROL is the control ID in the resource file.
HANDLE hWndEdit = GetDlgItem(hDlg, ID_EDITCONTROL);
LONG lAlign = GetWindowLong(hWndEdit, GWL_EXSTYLE) ;
// To toggle alignment
lAlign ^= WS_EX_RIGHT ;
// To toggle reading order
lAlign ^= WS_EX_RTLREADING ;
Nachdem Sie den lAlign-Wert festgelegt haben, aktivieren Sie die neue Anzeige, indem Sie den erweiterten Stil des Bearbeitungssteuerelementfensters wie folgt festlegen.
// This assumes your edit control is in a dialog box. If not,
// get the edit control handle from another source.
SetWindowLong(hWndEdit, GWL_EXSTYLE, lAlign);
InvalidateRect(hWndEdit, NULL, FALSE);
Uniscribe ist ein weiterer Satz von Funktionen, die eine präzise Steuerung für die Verarbeitung komplexer Skripts ermöglichen. Weitere Informationen finden Sie unter Uniscribe.