Hallo zusammen.
Ich schreibe gerade ein kleines Terminal-Programm für den Silabs CP2110.
Das ganze mache ich direkt per WinAPI und kein MFC oder ähnliches.
Als Terminal-Ausgabe verwende ich das Edit Control
Der µC hinter dem CP2110 gibt hierbei das Echo aus (also kein lokales
Echo).Das ganze funktioniert auch zu 99%.
Denn wenn ich Backspace drücke wird an den µC "0x08" geschickt und auch
direkt wieder zurück gesendet. Infolge dessen hätte ich nun erwartet,
dass der Cursor im Edit Control auch das letzte Zeichen hinter der
Cursor-Position löscht. Das Passiert aber nicht, sondern es wird ein
kryptisches Sonderzeichen ausgegeben. Erwartet das Edit Control
irgendwie einen anderen != 0x08 als Backspace code, oder woran kann das
liegen?
Das Editcontrol stellt das Zeichen dar, kryptisch sieht es aus, weil die
verwendete Schriftart keinen Glyph für das Zeichen enthält.
Das Editcontrol ist kein Terminal, es interpretiert nur sehr wenige
Steuerzeichen, nämlich CRLF und TAB, aber weder Backspace noch
Cursorpositionierung o.ä.
Wenn der Benutzer über die Tastatur dieses Zeichen sendet, wird es vom
Editcontrol anders interpretiert, als wenn es Bestandteil des mit
WM_SETTEXT übertragenen Textes ist.
Du wirst den an das Control gesendeten Text von derartigen Steuerzeichen
bereinigen und die Steuerzeichen gegebenenfalls selbst interpretieren
müssen.
Ahh, Ok. Dann werde ich das mal checken.
Hat mich nur gewundert, dass das WM_CHAR Event für das Edit Control ein
BS (0x08) liefert. Aber das WM_CHAR Event gibt wohl direkt den Keycode
der Tastatur auss und nicht das wie es vom Edit Control erkannt wird.