SetPos



  • heiho

    sagt mal,
    gibt es fuer ne edit box oder richedit box ne moeglichkeit festzulegen wo der cursor ist ? bzw abzufragen an welcher position er ist ?

    ich dacht an eine positions angabe durch die anzahl der characters
    mit zeilen {in multiline} geht es problemlos

    aber nix wie

    SetCurPos(13); // zwischen den 13. und 14. caracter oder vor dem 13.
    

    danke



  • Mr Evil schrieb:

    gibt es fuer ne edit box oder richedit box ne moeglichkeit festzulegen wo der cursor ist ?

    Jo mit ➡ EM_SETSEL bzw. EM_EXSETSEL.

    Mr Evil schrieb:

    bzw abzufragen an welcher position er ist ?

    Yep, mit ➡ EM_GETSEL bzw EM_EXGETSEL.



  • diese funktionen kenn ich, hab ich bereits in benutzung - nur dann aender ich ja die selections, das wuerde ich vermeiden wollen

    //dazuedit - ach drauf geschissen #gg
    wenn ich irgendwann die position durch source mal aendern will muss ich halt damit leben das die interne selection veraendert wird

    appropo selection
    gibts eigentlich eine funktion das die schrift grau hinterlegt wenn es selectiert ist ?
    ich kenn das mit dem SetItemState das ich dort den HG aendern kann, das ist auch nicht schwer, nur es sollte ja auch verschwinden sobald man den cursor wieder bewegt oder mit der maus was anderes selectiert


  • Mod

    Nein! Denn die aktuelle Caret Position (es ist nicht der Cursor, so heißt nur der Mauscursor), wird durch EM_SETSEL bestimmt und ist davon nicht unabhängig. Die Caret Position ist also immer vor dem ersten selektierten Zeichen oder nach dem letzten selektiertem Zeichen.

    Was möchtest Du denn genau machen? Mit EM_GETSEL bekommst Du die Cursorposition, aber das wurde schon geschrieben. Ich werde nicht schlau aus Deiner Frage.
    Oder möchtest Du nur woanders hinrollen?

    Ansonsten wird wenn ES_NOHIDESEL gesetzt ist der selektierte Bereich grau, wenn das Control nicht den Fokus hat!



  • ich moechte einfach durch den source die caret position veraendern und erfragen ohne das ich etwas selectieren muss
    mit dem "ES_NOHIDESEL" werd ich mal probieren, danke

    //dazuedit

    egal wie , ES_NOHIDESEL bringt nichts, wenn ich durch source etwas selectiere wird es nicht grau hinterlegt, man sieht nicht das etwas selectiert ist

    // nochmal dazu edit

    ich habs, es lag daran das ich EM_EXSETSEL verwendet hab anstatt das einfache EM_SETSEL



  • Wie Martin schon geschrieben hat, die aktuelle Markierung ist abhängig von der Caretposition. Du kannst also die Position nicht einfach unabhängig von der Markierung verschieben.

    Dies ist ein teilweise [u]|[/u][b]markierter/selektierter Beispi[/b]eltext.
    

    Dieser Textabschnitt wurde, als Beispiel vom Buchstaben 'i' im Wort 'Beispiel' bis zum Buchstaben 'm' des Wortes 'markierter', ausgewählt (Also der fett-gedruckte Teil.). EM_GETSEL liefert also die entsprechenden Offset-Werte bezogen auf den Anfang. Hätte man den Text nun andersherum markiert (von 'm' nach 'i'), so wäre das Caret hinter dem 'i' (des Wortes 'Beispiel') positioniert.

    Hoffe das ist so verständlich 😉 .



  • jaaaaaaa, ich weiss doch - das sieht man doch schon im normalen editor
    ich hatte was falsch gedacht

    und zwar immer wenn ich was selectiert hatte hatte man das nie gesehen {SELSELEX}
    daher dachte ich das diese selection intern eine andere ist als die die der user sieht
    darum dachte ich das ich den curser setzen kann ohne das ich die intern gespeicherte selection aendern muss

    dem ist aber nicht so - von daher hab ich kein stress mehr {o;



  • Mr Evil schrieb:

    darum dachte ich das ich den curser setzen kann ohne das ich die intern gespeicherte selection aendern muss

    Das Ding heißt NICHT Cursor, sondern Caret 🤡 .


Anmelden zum Antworten