CListCtrl im SubDialog



  • Hallo Welt,

    ich habe einen Dialog (sagen wir Mal Dlg_LA), welcher unter geeigneten Umständen einen zweiten kleinen Dialog (sagen wir Mal Dlg_DF) aufrufen soll.

    Dlg_DF soll nur aus einer dynamisch langen Liste von Einträgen bestehen.

    Da ich im Dlg_LA eine CListCtrl Komponente verwende, wollte ich die Liste im Dlg_DF ebenfalls per CListCtrl darstellen.

    Ich kann aber keine Funktion der ClistCtrl Klasse aufrufen?!

    // *** Inhalt aus Dlg_LA.cpp
    void Dlg_LA::ForumsBSP()
    {
      Dlg_LA BeispielDlg;
      Dlg_LA.ExampleFunc();
      Dlg_LA.DoModal();
    }
    
    // *** Inhalt aus Dlg_DF.cpp
    void Dlg_DF::ExampleFunc()
    {
    m_List.DeleteAllItems(); 
    /*
    Der Fehler tritt hier (afxcmnl.inl Zeile 156) auf:
    _AFXCMN_INLINE BOOL CListCtrl::DeleteAllItems()
    	{ ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L); }
    
    dabei ist m_hWnd==NULL
    
    */
    }
    

    Ich hoffe ihr könnt mit diesen minimalen Infos etwas anfangen und habt eine Idee, was ich überprüfen/korrigieren sollte?!

    Falls ihr mehr Infos benötigt, einfach melden...

    Vielen Dank im Voraus!
    #50



  • Hast du vergessen das ListControl mit einer Resource zu verbinden?

    DDX_Control(pDX, IDC_LIST1, m_List);
    


  • nein.

    die Liste ist zur Zeit (neben den default Buttons) meine einzige Komponente der Klasse.

    void Dlg_DF::DoDataExchange(CDataExchange* pDX)
    {
      CDialog::DoDataExchange(pDX);
      DDX_Control(pDX, IDC_LIST, m_List);
    }
    


  • sagt doch eigentlich schon der Fehler (m_hWnd==NULL), dein CListCtrl ist noch gar nicht erstellt. du kannst es nicht ansprechen bevor du DoModal() aufgerufen hast. Also füll die Daten in der InitDlg(), da existiert dein CListCtrl schon.



  • gut, Danke!

    innerhalb der OnInitDialog() Funktion funktioniert es!


Log in to reply