CComboBox - Debug Assertion Failed
-
Ich schlage mich gerade mit einer CComboBox herum.
Ich habe ein Dialog erstellt, eine Membervariable zugewiesen.
Jetzt sollte es doch möglich sein damit zu arbeiten. Bei jedem Befehl kommt aber eine "Debug Assertion Failed" Fehlermeldung.
Bei DoDataExchange ist die Membervariable zugewiesen und im Header steht sie auch. Macht ja visual c++ 6.0 automatisch.
Die CComboBox steht in einem modalen Dialog.
-
Es hilft ungemein:
1. Wenn Du die exakte Position des ASSERT angibst.
2. Den Callstack ansiehst und Deinen Code angibst der den Assert auslöst!
-
Wenn ich das Dialog nicht modal starte, dann kommt keine Fehlermeldung. Ich habe aber bis jetzt noch kein Item einfügen können.
class CKennlinie : public CDialog { // Konstruktion public: CKennlinie(CWnd* pParent = NULL); // Standardkonstruktor // Dialogfelddaten //{{AFX_DATA(CKennlinie) enum { IDD = IDD_Kennlinie }; CComboBox m_Auswahl_Kennlinie; //}}AFX_DATAvoid CKennlinie::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CKennlinie) DDX_Control(pDX, IDC_Auswahl_Kennlinie, m_Auswahl_Kennlinie); //}}AFX_DATA_MAP }
-
Das hilft nicht weiter. Bitte liefere die Informationen, die Martin Richter angefragt hat.
-
Ich weiß nicht was ihr wissen wollt.
Aber ich habs jetzt. Danke.
Aufruf durch
void CMainFrame::OnKennlinie() { // TODO: Code für Befehlsbehandlungsroutine hier einfügen CDC* pDC = GetDC(); CWnd* wnd = pDC->GetWindow(); //CKennlinie Kennlinie(wnd); //Kennlinie.DoModal(); CKennlinie* Kennlinie = (CKennlinie*)new CKennlinie(wnd); Kennlinie->Create(IDD_Kennlinie,this); Kennlinie->ShowWindow(SW_SHOW); Kennlinie->FillComboBox(); ReleaseDC(pDC); }delete (Kennlinie) im Destruktor nicht vergessen.
CKennlinie::CKennlinie(CWnd* pParent /*=NULL*/) : CDialog(CKennlinie::IDD, pParent) { //{{AFX_DATA_INIT(CKennlinie) // HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein //}}AFX_DATA_INIT } void CKennlinie::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CKennlinie) DDX_Control(pDX, IDC_Auswahl_Kennlinie, m_Auswahl_Kennlinie); //}}AFX_DATA_MAP } CKennlinie::FillComboBox(void) { m_Auswahl_Kennlinie.InsertString(0,"Test 0"); m_Auswahl_Kennlinie.InsertString(1,"Test 1"); }
-
Martin Richter schrieb:
Es hilft ungemein:
1. Wenn Du die exakte Position des ASSERT angibst.
2. Den Callstack ansiehst und Deinen Code angibst der den Assert auslöst!Ist das so schwer! In dem ASSERT wird eine zeile und eine Source Position angegeben.
Wenn der Assert kommt, kannst Du Wiederholen anklicken und im Debug Fenster den Stacktrace ansehen!Mal so ganz nebenbei: Du hast keinerlei Fehlerprüfung in Deinem Code, was passiert wenn der Create des Dialoges fehlschlägt?