Cellheaders bei CListCtrl - Variable grösse?



  • 'Tach zusammen.

    Habe ein CListCtrl im Bericht (engl. report) Modus, welches ich in 5 ungleichmässige Spalten aufteile

    CString sH1, sH2, sH3, sH4, sH5;
      sH1.LoadString(IDS_H_H1);
      sH2.LoadString(IDS_H_H2);
      sH3.LoadString(IDS_H_H3);
      sH4.LoadString(IDS_H_H4);
      sH5.LoadString(IDS_H_H5);
    
        // add the cell headers
        m_List2.InsertColumn(0, sH1, LVCFMT_LEFT, sH1.GetLength()*9);
        m_List2.InsertColumn(1, sH2, LVCFMT_LEFT, sH2.GetLength()*40);
        m_List2.InsertColumn(2, sH3, LVCFMT_LEFT, sH3.GetLength()*25);
        m_List2.InsertColumn(3, sH4, LVCFMT_LEFT, sH4.GetLength()*10);
        m_List2.InsertColumn(4, sH5, LVCFMT_LEFT, sH5.GetLength()*8);
    

    Alles Bestens bis jetzt.
    Nun möchte ich aber unbedingt, dasss die Breite der letzten Spalte (sH5) den Leerraum bis zum CListCtrl "auffüllt", sonst sieht es aus, wie wenn noch eine 6. Spalte vorhanden wäre, diese aber nicht beschriftet ist etc. Hoffe ihr wisst wie ich es meine 😉

    Wer kann mir helfen und ein Codeschnipsel dazu posten?



  • // Breite des Listcontrols holen
    	RECT rect;
    	m_lscFilialen.GetWindowRect(&rect);
    	// Die Breite ist:
    	// Rechter Rand - Linker Rand - Beide 3D-Ränder - Breite einer Scrollbar
    	// Dadurch wird eine horizontale Schrollbar vermieden und es sieht gut aus.
    	int nBreite = rect.right - rect.left - 2*::GetSystemMetrics(SM_CYEDGE) - ::GetSystemMetrics(SM_CXVSCROLL);
    

    So, nun kannst du mit nBreite rumrechnen. 🙂


Anmelden zum Antworten