Adding Columns to a List View Control

Columns appear only in report view, and they enable multiple pieces of information to be displayed for each list item. You can add columns to a list view control by using the LVM_INSERTCOLUMN message. Each item in a list view control can have, in addition to its item text, any number of strings called subitems. When you add a column to a list view control, you specify which subitem to display in the column.

Unless a list view control has the LVS_NOCOLUMNHEADER window style, each column has a header showing the column name. The user can click the header and can size the columns using the header.

The following example adds several columns to a list view control. The column headings are defined as string resources, which are consecutively numbered starting with IDS_FIRSTCOLUMN (defined in the application's header file). The number of columns is defined in the application's header file as C_COLUMNS.

// InitListViewColumns - adds columns to a list view control.

// Returns TRUE if successful or FALSE otherwise.

// hwndLV - handle of the list view control

BOOL WINAPI InitListViewColumns(HWND hwndLV)

{

extern char g_achTemp[256]; // temporary buffer

LV_COLUMN lvc;

int iCol;

// Initialize the LV_COLUMN structure.

lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

lvc.fmt = LVCFMT_LEFT;

lvc.cx = 100;

lvc.pszText = g_achTemp;

// Add the columns.

for (iCol = 0; iCol < C_COLUMNS; iCol++) {

lvc.iSubItem = iCol;

LoadString(g_hinst, IDS_FIRSTCOLUMN + iCol,

g_achTemp, sizeof(g_achTemp));

if (ListView_InsertColumn(hwndLV, iCol, &lvc) == -1)

return FALSE;

}

return TRUE;

}