Dropdown Combobox Problem



  • Hallo,

    schlage mich jetzt schon seit mehreren Stunden mit einem Problem bei der Combobox herum. Über die Suche hab' ich im Forum leider auch nichts finden können.

    Und zwar möchte ich jedes Mal, wenn der Text in der Combobox verändert wurde, diesen über eine Routine überprüfen lassen. Bei Änderungen über direkte Eingabe in der Editbox ist das auch kein Problem. Wenn man allerdings in der Dropdown-Liste einen Eintrag wählt (über die Maus), bekommt das Parent-Fenster nach Schließen der Dropdown-Liste und Übernahme in die Editbox KEINE Nachricht über WM_COMMAND. Warum ist das so? Muss ich da mit Subclassing ran oder gibt's vielleicht noch eine einfachere Möglichkeit?

    Grüße
    Mahavishnu



  • Normalerweise solltest Du CBN_SELENDOK, CBN_SELENDCANCEL, CBN_SELCHANGE usw. bekommen.

    Lies das lieber nochmal in der MSDN unter ComboBoxes nach...



  • Hallo Hepi,

    danke erstmal für die Antwort!

    All diese Nachrichten kommen auch, allerdings allesamt BEVOR der Text in
    der Editbox aktualisiert wurde. Nach Aktualisierung der Editbox kommt allerdings gar nichts mehr, was ich ziemlich unverständlich finde, weil gerade
    dieser Zeitpunkt doch wichtig wäre, um die entsprechende Änderung zu kontrollieren.

    Viele Grüße
    Mahavishnu



  • Nein, die Nachrichten CBN_EDITUPDATE, CBN_EDITCHANGE usw. müssen da auch kommen...

    Laut MSDN kommt CBN_EDITCHANGE sogar nachdem das System den Screen upgedated hat...



  • Hi,

    dem ist leider nicht so... Hab's gerade nochmal mit Spy++ verfolgt: CBN_EDITUPDATE, CBN_EDITCHANGE, usw kommen NUR, wenn die Änderung über die Tastatur erfolgt ist. Wenn die Änderung der Editbox durch das Wählen eines Elements in der Dropdown-Liste mit der Maus erfolgt ist, werden nur CBN_SELCHANGE, usw. gesendet, diese dann allerdings BEVOR der Text in der Edit Box geupdatet wurde. Ist mir irgendwie unverständlich, dass in letzterem Fall nicht noch zusätzlich die EDIT-Notifications gesendet werden.

    Jedenfalls hab' ich jetzt das Problem nun gelöst, indem ich in der Vergleichsroutine zusätzlich noch prüfe, ob CBN_SELCHANGE oder CBN_EDITCHANGE vorliegt. Im Fall von CBN_EDITCHANGE wird der Text direkt aus der Editbox überprüft, im Falle von CBN_SELCHANGE wird geprüft, welches Element aus der Liste gewählt wurde und dann dieses Element überprüft.

    Grüße
    Mahavishnu


Anmelden zum Antworten