CEdit: wandernder Cursor mit SetSel



  • Hi 2gether,

    kann mir einer von euch sagen, warum hier der Cursor wandert?

    DWORD t = m_ctrlEdit2.GetSel();
    
    	if( HIWORD(t) > 5 && HIWORD(t) < 15 )
    		m_ctrlEdit2.Undo();
    
    	m_ctrlEdit2.SetSel(HIWORD(t), HIWORD(t));
    	m_ctrlEdit2.Invalidate();
    	return false;
    

    habe schon einiges versucht, z. B. mit / ohne Invalidate, Parameter bei SetSel geändert, ...

    Es geht darum: Ich muss verhindern das Textteile in einem Edit verändert werden. Wenn eine Textänderung im 'verbotenen' Bereich stattfindet, soll der Text unverändert bleiben, genauso die Position des Cursors.

    Aber er wandert ... 😕 und ich bin 😡

    Any1 ne Idee?

    grüssle 🙂


  • Mod

    Und in was für einem WM_COMMAND Handler fängst Du das ab?

    Ist es nicht enfacher einen WM_KEYDOWN Handler zu verfassen und dort zu kontrollieren in welchem Bereich der Cursor steht und entsprechend zu reagieren?

    Dir Frage ist was Undo wirklich tut. Evtl. postet es eine Nachricht und löst nicht direkt eine Interaktion aus, weiterhin bleibt die Frage ob Undo im Change Event überhaupt schon erlaubt ist...
    Weiterhin weißt Du auch nicht ob die Anpassung der Cursorposition nicht erst nach dem Event/WM_COMMAND erfolgt, dass Du gerade bekommen hast...

    Du bewegst Dich auf dünnen Eis (nicht dokumentierten Bereich).



  • Martin Richter schrieb:

    Du bewegst Dich auf dünnen Eis (nicht dokumentierten Bereich).

    Jetz mal ehrlich: Bei allem anderen wärt ihr doch unterfordert, gelle 😉

    Wie gesagt, muss editiert wreden können, der Text. Nur eben nicht alles. Und Focusverlust bei nichteditierbarem Text is nicht. Wäre auch zu einfach.

    Bin der Lösung aber schon ein gutes Stück näher gekommen. In dem Fall eine globale vari und dann im OnSetFocus des Editfeldes die Pos geholt. Ist bis zur Änderung der CursorPos z. B. durch die Pfeiltasten auch genau das gesuchte. Aber das werde ich auch noch hinbekommen.

    Also Danke erstmal.

    grüssle 🙂


Anmelden zum Antworten