CListCtrl nur in dialogen ?



  • Heiho

    Ich moechte eine CListCtrl in einem ChildView anzeigen, hab eine klasse von CListCtrl abgeleitet und als member in der ChildView klasse deklariert

    wenn ich nu .Create(...) in OnCreate(..) von ChildView mach wird es einfach nicht angezeigt

    in nem buch wurde die CListCtrl nur im zusammenhang mit einen dialog angesprochen - kann es sein das es das nur in dialogen benutzen kann ?
    wenn ja, was kann ich stattdessen nehmen - und wenn nein - was mach ich falsch ?

    danke



  • Nimm einen CFormView, dann hast du wieder alles, was man so von einem Dialog gewohnt ist - nur als View.



  • Hallo,

    beim Create in OnCreate natürlich mit WS_CHILD|WS_VISIBLE erzeugen.
    Dann die Nachricht WM_SIZE bearbeiten. Darin kommt dann z.B.

    if ( m_wndListCtrl.GetSafeHwnd() )
       m_wndListCtrl.MoveWindow(0, 0, cx, cy);
    

    Dann solltest du es sehen.

    Gruß
    Frank



  • hmm - irgendwas mach ich noch falsch

    WS_CHILD|WS_VISIBLE hab ich schon drinn

    was mir aufgefallen ist - im prosise wurde es geloest indem eine CListView abgeleitet wurde - kann es sein das es das selbe ist nur fuer "normale" ansichten ohne dialog ?



  • Ja CListView entspricht einem CListCtrl in das Doc/View Model verpackt.



  • Hi,

    ich vermute, Du hast noch nichts in Deiner Liste zum anzeigen.

    BEGIN_MESSAGE_MAP(CChildView, CView)
    	ON_WM_CREATE()
    	ON_WM_SIZE()
    END_MESSAGE_MAP()
    
    int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CView::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	if (m_wndListCtrl.Create(WS_CHILD|WS_VISIBLE, 
    		CRect(0, 0, 0, 0), this, 0x01) == -1)
    		return -1;
    
    	CString itemText;
    
    	for ( int i = 0; i < 10; ++i )
    	{
    		itemText.Format(_T("Item %d"), i);
    		m_wndListCtrl.InsertItem(i, itemText);
    	}
    
    	return 0;
    }
    
    void CChildView::OnSize(UINT nType, int cx, int cy)
    {
    	CView::OnSize(nType, cx, cy);
    
    	if ( m_wndListCtrl.GetSafeHwnd() )
    		m_wndListCtrl.MoveWindow(0, 0, cx, cy);
    }
    

    Gruß
    Frank



  • ne - mein fehler war anscheinend das ich in der klasse was falsch gemacht hab - wenn ich es direkt so aufruf

    CListCtrl m_List und dann m_List.create laeuft alles fehlerfrei
    aber mit

    class CListPreview : public CListCtrl
    .
    .
    CListPreview m_List und m_List.create - da gings nicht, hab in der klasse irgendwo was falsch gemacht - muss noch rausfinden was #gg

    //dazuedit - die position und das alles werd ich anders setzen, die liste soll ja nicht das ganze fenster ausfuellen #gg - weiss da aber shcon wie ihc das mach - danke trotzdem


Anmelden zum Antworten