CListBox.Create Problem



  • Hallo zusammen,

    vorab: Ich hatte mit MFC noch nie etwas am Hut, muss aber gerade eine Anwendung, die in MFC geschrieben ist, erweitern.

    Dazu habe ich mir in Visual Studio ne GUI zusammengeklickt und muss sie jetzt mit Funktionalität anreichern, u.a. ist in der GUI eine ListBox. Funktioniert soweit auch gut, kann Items hinzufügen und auf sie zugreifen. Bisher sah der Konstruktor meiner GUI so aus:

    CSBC_BlackListDlg::CSBC_BlackListDlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CSBC_BlackListDlg::IDD, pParent)
    	, m_ParameterToAdd(_T(""))
    	, m_BlacklistParameters()
    {
    }
    

    Jetzt muss die ListBox es aber ermöglichen, dass mehrere Zeilen markiert werden können. Dafür hab ich im Moment erstmal nur die Möglichkeit gefunden ListBox.Create in eben erwähntem Konstruktor zu nutzen (falls das auch anders geht, immer her damit!). Dazu wollte ich den Konstruktor also um folgende Zeile erweitern:

    int test = m_BlacklistParameters.Create(LBS_DISABLENOSCROLL|LBS_MULTIPLESEL, CRect(10,10,200,200), pParent, 1);
    

    Das LBS_MULTIPLESEL bringt mir also meine Mehrfachanklick-Möglichkeit. Wenn ich das so aufrufe gibt es aber nen Assert, und wenn ich da im Debugger mithüpfe fliegt die Assertion beim pParent-NULL Vergleich! Wieso ist pParent NULL? Was muss ich tun, um mein Ziel zu erreichen?

    Ach und falls mir noch jmd sagen kann, wo ich die CRect Angaben herkriege, so dass alles so aussieht wie bisher, wär echt geil! Die Angaben aktuell sind nur so provisorisch. (Die ID übrigens auch, kA ob da was genaues hinkommt)

    Dank schonmal vorab für Mühen!



  • 1. Du darfst Create nicht im Konstruktor aufrufen, da dein Parent-Handle da noch nicht existiert (pParent == NULL). Lieber OnInitDialog verwenden.

    2. Wenn ich dich richtig verstehe, hast du bereits eine Listbox und möchtest nur Multiselect aktivieren. Wenn ja, dann versuch doch lieber ModifyStyle oder gleich im Designer die Selection-Property der Listbox auf "Multiple" setzen.



  • Source2702 schrieb:

    2. Wenn ich dich richtig verstehe, hast du bereits eine Listbox und möchtest nur Multiselect aktivieren. Wenn ja, dann versuch doch lieber ModifyStyle oder gleich im Designer die Selection-Property der Listbox auf "Multiple" setzen.

    Danke, hier hab ich iwie nich nachgeschaut ... 🙄


  • Mod

    @beselbube :
    Der Weg über den Ressourcen Editor ist der richtige.

    ModifyStyle funktioniert bei manchen Stilen nicht. Dazu gehört auch, multi-select! Bestimmte Stile können nur gesetzt werden, wenn das Control erzeugt wird.


Anmelden zum Antworten