ComboBox::GetCurSel() löst "Debug Assertion failed" aus
-
Hallo!
Ich versuche mich gerade daran ein kleines MFC Programm zu schreiben, wo ich in einem Dialog mehrere Kombinationsfelder (CComboBox) habe.
Ich schreibe euch mal auf, wie ich vorgegangen bin:
Ich habe die Kombinationsfelder mit dem Ressourceneditor in mein Dialogfeld gezeichnet, und ihnen jeweils eine ID verpasst.
Dann habe ich die Kombinationsfelder noch mit Werten im Ressourceneditor gefüllt, und die Größe des Listenfeldes festgelegt.Wenn ich dann meine Anwendung getestet habe, hat auch alles funktioniert (Die Kombinationsfelder ließen sich öffnen, und es ließen sich auch alle Werte selektieren).
Dann ging es an die Funktionalität:
Zuerst habe ich der Dialogklasse, in der sich die Kombinationsfelder befinden jeweils eine Membervariable vom Typ CComboBox hinzugefügt.
Dann habe ich mit dem Assistenten der jeweiligen ID meiner Kombobox die Nachrichtenroutine CBN_SELCHANGE hinzugefügt, die ich dann mit diesem Code gefüllt habe:void CCOMPortPref::OnSelchangeComboComport() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen int select; select = m_CBoxPort.GetCurSel(); switch(select) { case 0: MessageBox("COM1", "Gewählt :", MB_OKCANCEL); break; case 1: MessageBox("COM2", "Gewählt :", MB_OKCANCEL); break; case 2: MessageBox("COM3", "Gewählt :", MB_OKCANCEL); break; case 3: MessageBox("COM3", "Gewählt :", MB_OKCANCEL); break; }; }
Beim Kompilieren und Linken gibt es keinerlei Problem.
Führe ich das Programm dann aus, und wähle in dem Kombinationsfeld etwas neues aus (also veranlasse die Nachricht CBN_SELCHANGE), dann bricht das Programm immer mir der Meldung "Debug Assertion failed" ab, und gibt mir in der Datei afxwin2.inl die Zeile 711 an. Dort steht:_AFXWIN_INLINE int CComboBox::GetCurSel() const { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0); }
Damit kann ich leider nichts anfangen, und finde auch keinen Fehler, wenn ich mein Programm mal mit Beispielen aus dem Internet vergleiche.
Ich hoffe IHR könnt mir helfen.
Gruß
Maik
-
Du machst den Befehl vor OnInitDialog, da ist die Combobox noch nicht erstellt.
Deswegen geht das schief. Achte auf die Reihenfolge und gut ist.
-
Danke für den Tip. Jetzt habe ich es hinbekommen.
Gruß
Maik