Cursorposition in "Echtzeit" ermitteln

zoidberger

Mitglied
Hallo Leute!

Wie manche schon wissen bin ich damit beschäftigt eine art Texteditor zu schreiben.
Dazu möchte ich, ähnlich wie bei bekannten Microsoft Programmen unten die Zeilennummer einblenden lassen und brauche diese auch ständig für weitere Funktionen.

Die aktuelle Cursorposition zu bestimmen und zu speichern ist auh kein Problem..
Leider finde ich keinen event handler, der die curserposition dauernd überwacht...

also wenn der user dann mit der "pfeil nach oben taste" durch den text geht, sollte die aktuelle zeilennummer dauernd aktuallisiert werden :)

Ich glaube ihr versteht schonw as ich meine..
könnte mir da jemand weiterhelfen?

Vielen Dank schonmal!
 
OKay, das ist ja ziemlich harter tobak...
und vor allem so viel^^

hat denn keiner ne etwas kompaktere antwort darauf ?
also einfach ne kleine methode die den cursor.. oder wie auch immer man den in einem textfeld nennt... überwacht?

Danke trotzdem für deine antwort!
 
Hallo Leute,

ich hab jetzt selbst herrausgefunden wie sich so etwas realisieren lässt. Für alle die es interessiert:

Ich habe mit hilfe der SetTimer() Methode einen Timer erstellt, welcher alle 100ms ein Event wirft. Für dieses kann man entweder eine Methode mit Callback erzeugen oder einfach die Standardmethode OnTimer() implementieren. Innerhalb dieser Methode lasse ich mir immer die aktuelle Selektion mit GetSel() geben und nehme das hintere Ende als Caret (so heißt der Curser im Textfeld richtig :) Position an (wenn es keine Markierung gibt, sind Anfang und Ende der Selektion die selbe Position). Anhand dieser Position kann man dann ermitteln, in welcher Zeile und Spalte man sich befindet.

Damit diese Methode beim Event auch aufgerufen wird, muss man die Messagemap noch um den WM_ON_TIMER() Eintrag erweitern.

Mehr Infos und die genaue Anwendung von Timern findet ihr unter
http://msdn.microsoft.com/en-us/library/ms644906.aspx
und Beispiel:
http://msdn.microsoft.com/en-us/library/ms644901(VS.85).aspx

Ich hoffe das hilft nun all denjenigen weiter, die wie ich auf der Suche waren und einfach nach dem falschen Wort gegoogelt haben ;)

bye
 
Zuletzt bearbeitet:
Zurück