Bei mouse klick auf editfeld den inhalt markieren ?



  • Hallo !

    Versuche seit gestern den inhalt eines editfeldes zu markieren wen man mit der
    mouse darauf klickt. (Nicht bei doppel klick, den das geht ja sowiso.)

    Habs mal so probiert:

    void CMainDlg::OnSetfocusIntValue()
    { 
      CEdit *pEdit = (CEdit *)GetDlgItem(IDE_IntValue);
      pEdit->SetSel(0,-1);
    }
    

    Aber irgenwie makiert er nicht, wenn ich aber in:

    void CMainDlg::OnChangeIntValue() 
    {
        UpdateData();
    
        ////////// test code ///////////
         CEdit *pEdit = (CEdit *)GetDlgItem(IDE_IntValue);
         pEdit->SetSel(0,-1);
        ////////////////////////////////
    
        m_HighNibble = m_Value >> 8;
        m_LowNibble  = m_Value & 0x0F;
    
        UpdateData(false);
    }
    

    schreibe markiert er jeden einzelnen eintrag. Vieleicht hat jemand von euch
    das gleiche schon mal probiert. Freue mich über jeden tipp.

    Viele Grüße
    Michael



  • Kann ja auch net gehn 😉

    Also, wenn man mit der Maus auf das Edit klickt, welches NICHT den Fokus hat, dann wird der Fokus gesetzt, die Message EN_SETFOCUS an den Parent geschickt, DANACH wird verarbeitet, wohin die Maus geklickt wurde! Es bringt also nix, in EN_SETFOCUS SelChange aufzurufen, es müsste aber funzen, wenn man NM_CLICK abfängt.



  • Hallo RenéG !

    Ok. Danke für den Tipp ! Hab jetzt nach der Nachricht NM_CLICK gesucht.
    Wen ich im Klassen-Assistenten auf mein IDE_EDIT1 klicke sehe ich aber nur
    "EN - Nachrichten", Hab das Editfeld als int Variable und nicht als Control
    definiert. Muß ich um NM_CLICK zu empfangen daraus ein Control machen ?
    Wo Empfange ich die Nachricht in (ON_NOTIFY oder in WM_NOTIFY).
    Mit OnNotify() hab ich´s schon probiert jedoch keine nachricht des Editfeldes
    bekommen.

    Viele Grüße
    Michael



  • Ich denkmal das musst du mit dem ON_NOTIFY Makro machen.



  • Weiss net, ob das Edit-Feld so eine Nachricht schickt ... falls nicht, wirst Du Probleme haben, in OnClick das ganze zu selektieren !

    Mal so testen:

    BEGIN_MESSAGE_MAP(...)
      ON_NOTIFY( NM_CLICK, IDE_EDIT1, OnEditClick)
    END_...
    
    void C...::OnEditClick( NMHDR* pNotifyStruct, LRESULT* result)
    {
    }
    


  • Hallo !

    Hab das jetzt mal mit dem Eintrag in der MessageMap probiert. Ich springe
    aber nie in die Funktion:

    void C...::OnEditClick( NMHDR* pNotifyStruct, LRESULT* result)
    {
    }
    

    Bitte helft mir, bin schon am verzweifeln 😕

    Viele Grüße
    Michael



  • Ich hab grad mal mit Spy++ nachgeschaut.
    Es wird keine Notify-Message zum Parent geschickt wenn man ins Edit reinklickt.

    Es wird aber eine WM_MOUSEACTIVETE Message geschickt.

    Dummerweise wird erst diese Message geschickt und dann behandelt das Control deinen Mausklick. Als würde die Markierung sofort wieder verschwinden.

    Die einzigste Möglichkeit dich ich jetzt wüsste ist das du dir ein Klasse von CEdit ableitest und dort WM_LBUTTONUP behandelst.



  • Hallo Nemesyzz !

    He das mit den Spy++ war ne supppa Ide, ok werd mir das ganze noch mal überlegen, vieleicht probier ich das mit dem ableiten der CEdit klasse
    einfach mal aus.

    Danke und Viele Grüße
    Michael


Anmelden zum Antworten