Mehrzeiliges Eingabefeld



  • Hallo,

    ich habe ein mehrzeiliges Eingabefeld. Mit ein paar Buttons kann vorgegebener Text eingefügt werden, ähnlich wie bei einem HTML-Editor. So hänge ich also neuen Text an den bereits vorhandenen:

    UpdateData(TRUE);
    m_strEdit1 = m_strEdit1 + "<br>\r\n";
    UpdateData(FALSE);
    

    So kann ich aber nur Text hinten an den bereits vorhandenen Text schreiben. Wie kann ich denn Text dahin schreiben wo der Cursor sich gerade befindet?
    Ich habe das so versucht:

    CPoint point;
    point = m_strEdit1.GetCaretPos();
    

    Ich habe jetzt also die Position des Cursors, leider habe ich keine Ahnung wie ich nun meinen Text an die Position des Cursors bekomme. Bei mir wird der Text immer hinten angehängt.

    Über Hilfe wäre ich sehr dankbar.



  • ich hab da leider in der richtung noch nix gemacht, trotzdem ma in der msdn nachgeschaut:
    CEdit::CharFromPos muesste gehen.

    wenn das nicht geht evtl das hier:
    CEdit::Paste. Da muesstest du dann vorher dein text ins clipboard laden und dann einfuegen (am besten vorher clipboard auslesen, speichern und nachher zurueckschreiben).

    Esco



  • CharFromPos hatte ich glatt übersehen. Ich denke das ist genau das richtige. Bis jetzt sieht es aus als ob alles funktioniert. Ich danke dir 👍



  • Ich hatte auch diese Frage und dann gleich den Thread gesehen, was fürn Zufall.
    Ist die Variable des EditFeldes vom Typ CString? Ich hab nämlich nicht diese Methode zur Auswahl .GetCaretPos();, warum?



  • Hehe, das ist wirklich Zufall. Wegen GetCaretPos hatte ich mich vertippt. Mit einer Control Variable auf das Edit Feld oder einem Zeiger klappts. Allerdings habe ich es immer noch nicht wirklich geschafft einen Text an der Cursorposition einzufügen, aber ich bin nah dran. CharFromPos müsste trotzdem die richtige Funktion dafür sein. Wenn du weisst wie ich das mit der Zwischenablage realisiere, oder das Prob sonst lösen kannst, poste doch mal bitte wie du es geschafft hast. Wenn ich es hinbekomme poste ich es auch hier rein



  • den String teilste auf und in einer Schleife fügste mit SetAt(curserpos +=i, string) ,den du vorher mit atoi konvertiert hast, dazu.

    Edit: atoi ist doch für String -> int, also Müll


Anmelden zum Antworten