Listbox geht nicht



  • Hallo,

    wenn ich eine normale Listbox erstelle, innerhalb eines Fensters, dann kann ich auch Werte per:

    ((CListBox*)GetDlgItem(IDC_LIST_KATEGORIE))->AddString(_T("BLAB"));
    

    einfügen. Ich habe aber nun ein Hauptdialog, und ein zusätzlichen Dialog,
    der bei auswahl eines Menüs geöffnet wird.
    Die EditBoxen darin funktionieren auch ganz normal. Doch die Listbox will irgednwie nicht funktionieren.

    Folgendes habe ich gemacht:
    1. Listbox im neuen Dialog per Toolbox erstellt.
    2. der Listbox eine Variable per Assistent vom Typ CListBox zugewiesen.
    3. versucht innerhalb der Hauptdialog Klasse die Listboc mit Werten zu füllen:

    ((CListBox*)GetDlgItem(IDC_LIST_KATEGORIE))->AddString(_T("BLAB"));
    

    oder auch so:

    objektKlasseNeuerDialog.controllVariable.AddString("hjhk");
    

    Aber ich bekomme immer den Fehler: Debug Assertion Failed!

    Was mache ich falsch?



  • Hallo,

    versucht innerhalb der Hauptdialog Klasse die Listboc mit Werten zu füllen:

    Das ist der falsche Zeitpunkt, das zusätzliche Dialogfenster und alle Steuerelemente, die darin enthalten sind, existieren zu diesem Zeitpunkt noch nicht.

    Siehe dazu http://www.c-plusplus.net/forum/viewtopic-var-t-is-78430-and-highlight-is-dialog+oninitdialog.html

    MfG,

    Probe-Nutzer



  • hmmm.

    aber wenn ich die 'AddString' Methode innerhalb einer Funktion aufrufe, dann kommt der selbe Fehler:

    Konkret: im Hauptdialog habe ich ein Menu:

    void CKalender::OnMontag08()
    {	
     veransKalObj.m_Kategorie_Control.AddString("zeile 1");  
            veransKalObj.m_Kategorie=veransKalObj.m_Kategorie_ar[veransKalObj.wochenTag]
    [veransKalObj.uhrzeit];
    veransKalObj.DoModal();
    }
    

    Beim anklicken öffnet sich dann normalerweise das Menu, aber wegen der Methode AddString leider wieder nicht.

    Habe also AddString sonst nirgends woanders stehen! wo ist nun das Problem?



  • Das entsprechende Fenster zu veransKalObj.m_Kategorie_Control wird erst mit dem Aufruf von veransKalObj.DoModal() erstellt, vorher ist es noch nicht gültig. Du müsstest veransKalObj::OnInitDialog überschrieben und die Listbox dort füllen.



  • also ich habe nun zumindest versucht die OnInitDialog() in der Klasse des neuen Dialoges zu überschreiben:

    1. in der Header Datei:

    public:
    	BOOL OnInitDialog();
    

    Impl. Datei:

    BOOL VeranstKalendInfo::OnInitDialog(){
    
    	CDialog::OnInitDialog();
    	VeranstKalendInfo::m_Kategorie_Control.AddString("TEST eins");
    
    	return TRUE;
    }
    

    ABER der gleiche fehler kommt noch immer?


  • Mod

    1. Lass doch biete den Klassen Scope VeranstKalendInfo:: weg
    2. Ist m_Kategorie_Control wirklich per DDX_Control an ein Control gebunden?



  • wenn ich die variable m_Kategorie_Control alleine, also ohne die Klasse, benutze, dann kennt er die nicht, obwohl die ja in der Headerdatei drin steht.

    ja die ist schon an ein ddx control gebunden, habe es ja mit dem Assistenten gemacht... zusätzlich habe ich nihcts gemacht...


Log in to reply