add items to listview:
HWND hwndlistview=GetDlgItem(IDC_LIST1)->m_hWnd;
int tabs[] = {30, 120, 210 };
TCHAR txtbuf[64];
LVCOLUMN col;
int nret=0;
int colnum=0;
for(int i=0;i<sizeof(tabs)/sizeof(int);i++)
{
wsprintf(txtbuf,"Column %d",i);
col.mask=LVCF_FMT &brvbar; LVCF_WIDTH &brvbar; LVCF_TEXT &brvbar; LVCF_SUBITEM;
col.fmt=LVCFMT_CENTER;
col.cx=tabs[i];
col.pszText = txtbuf;
col.cchTextMax=sizeof(txtbuf);
col.iSubItem = i;
nret=ListView_InsertColumn(hwndlistview,i,&col);
if(nret==-1)
break;
else
colnum++;
}
if(colnum>0)
ListView_SetItemCount (hwndlistview, colnum);
if(nret!=-1){
::MessageBox(NULL,"ok","ok",MB_OK);
}
else
{
::MessageBox(NULL,"ERR","ERR",MB_OK);
return;
}
LVITEM lvItem;
ZeroMemory(&lvItem,sizeof(LVITEM));
int dIndex;
for(int x=3;x>=0;x--)
{
lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
wsprintf(txtbuf,"Row %d",i);
lvItem.pszText = txtbuf;  
dIndex = ListView_InsertItem(hwndlistview,&lvItem);
// Add subitems
for(int y=1;y<3;y++)
{
lvItem.mask = TVIF_TEXT;
lvItem.iItem = dIndex;
lvItem.iSubItem = y;
lvItem.pszText = txtbuf;
wsprintf(txtbuf,"Sub Item %d,%d",x,y-1);
ListView_SetItem(hwndlistview,&lvItem);
}