ComboBox und Rückgabewert von GetCurSel()



  • Hallo

    Ich habe eine CombomBox und fange die Nachricht OnBnSelChange ab und versuche nun innerhalb der Funktion den aktuell ausgewählten Eintrag mittels GetCurSel() zu bekommen. Leider bekomme ich immer nur CB_ERR beziehungsweise -1 zurück geliefert.

    Code:

    void Clubs::OnCbnSelchangeChoosencountry()
    {
    	CurSelCountry = ctlClubsInCountry.GetCurSel();
    }
    

    Woran kann das liegen?

    chrische


  • Mod

    In der Box ist eben nichts selektiert. Bist Du sicher, dass Du auch das korrkekte Control abfragst?

    Wenn ich mir die Namen der Handler und den Namen Deines Controls ansehe scheint es mir etwas anderes zu sein!



  • Martin Richter schrieb:

    In der Box ist eben nichts selektiert. Bist Du sicher, dass Du auch das korrkekte Control abfragst?

    Wenn ich mir die Namen der Handler und den Namen Deines Controls ansehe scheint es mir etwas anderes zu sein!

    Dem stimme ich zu.
    Nun etwas noch was dir zur Lösung verhelfen sollte, wenn du auf die Nachricht OnBnSelChange reagierst, dann heißt das, immer wenn er sich irgendwie ändert. Dies bedeutet du reagierst selbst wenn man die Box nur beim erstenmal aufklappt und da ist noch nix ausgewählt, daher deine -1. Ich hoffe ich irre damit nicht, aber ich denke es müßte soweit stimmen. Ich habe die Klasse für die ComboBoxen nicht im Kopf aber schaue dochmal in der MSDN (http://msdn.microsoft.com) nach und suche nach einer anderen Methode die dir das liefert was du willst, nämlich das ausgewählte Element. Oder mach dir doch einfach eine Membervariable und frage deren Inhalt nach der Auswahl ab (nicht vergessen vorher ein UpdateData(TRUE) drüber zu jagen um den Inhalt aus der Oberfläche in die Variable zu laden 😉 )

    Andernfalls schaue noch einmal deine Variablen-/Feldnamen an um sicher zu gehen das du auch wirklich das richtige Steuerelement ansprichst, den das scheint mir auch nicht der Fall zu sein.

    Grüße,
    inva



  • inva schrieb:

    Nun etwas noch was dir zur Lösung verhelfen sollte, wenn du auf die Nachricht OnBnSelChange reagierst, dann heißt das, immer wenn er sich irgendwie ändert. Dies bedeutet du reagierst selbst wenn man die Box nur beim erstenmal aufklappt und da ist noch nix ausgewählt, daher deine -1.

    Neee, so ganz passt das nicht.
    Selchange wird erst aufgerufen, wenn die Box wieder zu klappt - oder beim Ändern per Tastatur.
    Aber man kann sie natürlich auf und wieder zu klappen ohne was zu wählen. 🙂



  • Dann doch einfach einen Defaultwert setzen mit SetCurSel(), beispielsweise der erste Eintrag.



  • maRKus23 schrieb:

    Dann doch einfach einen Defaultwert setzen mit SetCurSel(), beispielsweise der erste Eintrag.

    Manchmal will man aber den User zwingen, was zu wählen. Dann ist eine Vorauswahl blöd, weil man nicht weiß, ob sich der User um die Eingabe gekümmert hat oder nicht. 😉



  • Hallo

    Wie Martin schon richtig festgestllt hat, war der Fehler die falsche Controlvariable. manchmal ist es schon komisch, wie man Stunden nach solchen komischen und wirklich überflüssigen Fehlern suchen kann udn trotzdem nichts findet.

    chrische


Anmelden zum Antworten