Editfeld aus Veränderung reagieren



  • Hallo,

    wiß hier jemand eine Lösung für folgendes Problem?
    Und zwar habe ich in einem Dialog ein Editfeld, in welches daten geschrieben werden.

    Jetzt würde ich gerne wissen, wie ich es realisieren kann, das ich merke wenn sich die daten in dem Feld ändern.
    Auf welche Nachricht muss ich hierzu reagieren und wie am besten?

    Danke





  • Hmm so ganz will das bei mir nicht klappen.

    Ich schreibe Test in das Editfeld per

    SetDlgItemText(hDlg, IDC_RAWDAT, TEXT("123456789;666666;4444"));
    

    Und meine Nachrichtenbehandlung sieht so aus:

    case WM_COMMAND:
     switch( LOWORD(wParam) )
     {
       case IDC_RAWDAT:
    					switch( HIWORD(wParam) )
    					{
    						case EN_CHANGE:
    							MessageBox ( hDlg, TEXT("Daten wurden geändert"), TEXT("scanning"), 64 );
    							break;
    					}
    
    					break;
     }
    

    So,

    jetzt meine er aber auch schon bei der Initialisierung, das der Inhalt verändert wurde. Ega ob ich EN_CHANGE oder EN_UPDATE vergleiche.


  • Mod

    Und das ist korrekt. Auch mit SetWindowText wird ein EN_CHANGED versendet. Du musst Dir selbst ein Flag setzen, ob Du diese Veränderung berücksichtigen willst oder nicht.
    Die MFC hat dazu einen speziellen Trick, der für in DoDataExchange gemachte Änderungen alle Notifications abfängt und ignoriert.

    Wenn es Dir darum geht nur Veränderungen festzustellen, dann könntest Du auch mit EM_SETMODIFY das Veränderungsflag zurücksetzen und mit EM_GETMODIFY abfragen ob sich etwas verändert hat.



  • Ok, das würde auch gehen.
    Hab nun eine andere Lösung gefunden, die einfach prüft, ob der Inhalt leer ist, wie es ja beim Initialisieren bei mir der Fall ist.

    Danke für deine Hilfe


Anmelden zum Antworten