RichEdit - Sichtbarer Text ermitteln
-
Nachdem ich mich durch alle RichEdit Beiträge gearbeitet habe, und nichts fand, was mein Problem beschreibt, wage ich mich, wiedermal einen Thread über RichEdit zu erstellen...
Ich möchte ermitteln, welcher Text gerade sichtbar ist. Und das am liebsten mit einem Ereignis abfangen, immer wenn etwas am sichtbaren Bereich ändert, also z.B. bei Scrollen, verschieben des Cursors durch Pfeile (wenn dann gescrollt wird), Beim verändern der RichEdit Grösse...
...einfach dass ich laufend, bevor der sichtbare Text angezeigt wird, ihn noch bearbeiten kann...Geht das überhaupt? - Wäre sehr dankbar für Hinweise!!
- Adrian
-
-
Hmm, ist das wohl das, was ich möchte?? - Mich dünkt, als liefere EM_GETRECT nur "Graphisch" den sichtbaren Bereich. Ich möchte schlussendlich aber Zugriff auf den TEXT haben. Das heisst, den sichtbaren Text bearbeiten. Dazu ist wohl EM_GETRECT nicht, oder?
Thanks anyway!- Adrian
-
SendMessage (edbxRich, EM_SETSEL, (WPARAM)0, (LPARAM)-1); // alles markieren SendMessage (edbxRich, WM_GETTEXT, sizeof(string), (int)string); // Text holen // irgendwas mit dem Text (string) machen ... SendMessage (edbxRich, WM_SETTEXT, sizeof(string), (int)string); // Text schreibenBlackbird
PS: Die Textlänge kann mit EM_GETTEXTLENGTHEX ermittelt werden, bevor man string mit malloc alloziiert und den Text mit WM_GETTEXT holt.
-
Entweder versteh ichs nicht, oder dann reden wir aneinander vorbei.
Blackbird, Dein Beispiel nimmt doch den ganzen Text, und nicht nur der, welcher sichtber ist?? Ich muss vielleicht sagen, was ich unter sichtbar verstehe: Den Text, den man im RichEdit Feld effektiv sieht. Oben und Unten (und sogar auf der Seite) könnte noch mehr Text sein. Ich möchte aber nur Zugriff auf den, der im sichtbaren Bereich ist. (Wenigstens einfach vertikal gesehen)- Adrian
-
Das stimmt. Hatte nicht so exakt auf Deine Formulierung geachtet.
Den sichtbaren Teil wirst Du wahrscheinlich nur durch Ausrechnen der verdeckten/nicht verdeckten Zeilen mit Hilfe der Zeichengröße (Zeilenhöhe) und der EditFeld-Größe ermitteln können.
Blackbird
-
Von was gehe ich denn aus? - Vom Cursor? - Der kann ja aber irgendwo sein. Auch im nichtsichtbaren Bereich.
Gibt es die Möglichkeit, die erste sichtbare Zeile zu erhalten?
Ist gar nicht so einfach, naja.
- Adrian