zugriff auf CListBox



  • Hallo Leute, mein Problem ist, ich will von einer Klasse(abgeleitet von CCmdTarget)meine CListBox in der Dialogfeldklasse mit Daten befüllen. Ich hab schon einige Tips in einem anderen Forum bekommen, ging aber alles nicht. Ich hoffe Ihr könnt mir helfen.
    Danke!
    Gruss exxe



  • Hallo

    Du musst im Klassenassistenten eine Membervariable für die ListBox erzeugen (Achtung: beim erstellen kannst du zwischen Wert und Control unterscheiden, du musst Control verwenden). Nun kannst du über die Membervariable auf die ListBox zugreifen
    (z.B.: m_cMyListBox.AddString("Hallo");)Vielleicht sieht die Argumentenliste etwas anders aus oder es bittet sich eine andere Funktion an, aber grundsätzlich müsste es so funktionieren. Notfals in die MSDN sehen oder nochmal fragen.

    Hoffe das ich dir helfen konnte.



  • danke für den tip, aber die Variable ist ja dann in meiner dialogfeldklasse. ich willaber von ausserhalb auf die listbox zugreifen.
    russ exxe



  • wie meinst du das von außerhalb? von einem anderen programm?



  • nee nich von anderem Programm sondern von einer anderen Klasse im Programm:
    Dialog----->1:1-Klasse1--------1:n-Klasse2
    d.h. ich Instanziere die Klasse1 genau 1x von der Dialogklasse. In der Dialogklasse kann ich auf meine CListbox ohne Probleme zugreifen aber von meiner Klasse2 will ich ja einträge in die CListbox einfügen. Das ginge evtl. wenn ich einen Zeiger der Dialogfeldklasse in Klasse2 hätte. Aber da hat es die ganze Zeit Fehlermeldungen gegeben, das die Includs eine Verschachtelungstiefe von 200irgendwas hätten.
    Gruss exxe



  • Dann mustt du entweder
    a) (böse böse aber so schön einfach) die die ListBox als Globale Variable anlegen.
    b) deiner zweiten Klasse irgendwie einen Pointer auf deine Dialog-Klasse übergenen.
    c) Sende eine Message an deinen Dialog mit den Daten die du gerne in der Listbox sehen würdes.



  • oh dank, das hört sich mal aber gut an, ist zwar wahrscheinlich nicht sonderlich sauber programmiert aber wenns denn tut!
    danke



  • Das sauberste ist den this-Pointer deines Dialogs der Klasse übergeben.

    In deiner neuen Klasse: Headerdatei

    public:
    CdeindialogDlg* m_pOwner;
    void SetOwner(COe3_CdeindialogDlg* pOwner) { m_pOwner = pOwner; };
    

    In der Dialogklasse

    Cneueklasse deineklasse;
    deineklasse.SetOwner(this);
    

    Zugriff dann in deiner neuen Klasse

    m_pOwner->  hier dann weiter mit deinen Membervar
    

    [ Dieser Beitrag wurde am 28.08.2002 um 09:59 Uhr von Unix-Tom editiert. ]


Anmelden zum Antworten