The CListCtrl::InsertColumn() is used to add a column to the list view
control. This function can be used even if the control is not in the report
mode. When using this function you should remember to specify the nSubItem
argument (or the iSubItem field if you are using the LV_COLUMN structure).
The nSubItem is usually equal to the column number. Here is a helper function
that makes adding a column easier.
// AddColumn - adds column after the right most column // Returns - the index of the new column if successful or -1 otherwise. // sColHeading - the column's heading // nWidth - Width of the column, in pixels. If this parameter is -1, // the column width is the same as previous column // nFormat - the alignment of the column. Can be LVCFMT_LEFT, // LVCFMT_RIGHT, or LVCFMT_CENTER. int CMyListCtrl::AddColumn(LPCTSTR sColHeading, int nWidth /* = -1*/, int nFormat /* = LVCFMT_LEFT*/) { CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0); int nColumnCount = pHeader->GetItemCount(); if( nWidth == -1 ) { // The line below return zero for ICON views //nWidth = GetColumnWidth( nColumnCount - 1 ); // Get the column width of the previous column from header control HD_ITEM hd_item; hd_item.mask = HDI_WIDTH; //indicate that we want the width pHeader->GetItem( nColumnCount - 1, &hd_item ); nWidth = hd_item.cxy; } return InsertColumn( nColumnCount, sColHeading, nFormat, nWidth, nColumnCount ); }