代码如下:
//-------------创建表项-----------
lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_CENTER;
lvc.cx = 20;
lvc.pszText = TEXT ("");
lvc.iSubItem = 0;
SendMessage (hLV, LVM_INSERTCOLUMN, 0, (LPARAM)&lvc); lvc.mask |= LVCF_SUBITEM;
lvc.cx = 100;
lvc.pszText = TEXT ("文件名");
lvc.iSubItem = 1;
SendMessage (hLV, LVM_INSERTCOLUMN, 1, (LPARAM)&lvc);
//---------------加两行-------------------
lvi.mask = LVIF_IMAGE ;
lvi.iItem = 0;
lvi.iSubItem = 0;
ListView_SetExtendedListViewStyle(hLV,LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
dIndex=ListView_InsertItem(hLV,&lvi);
ListView_InsertItem(hLV,&lvi); lvi.mask = LVIF_TEXT;
lvi.iItem = dIndex;
lvi.iSubItem = 1;
lvi.pszText = TEXT("a1.txt");
ListView_SetItem(hLV,&lvi);
lvi.mask = LVIF_IMAGE ;
lvi.iItem = 1;
lvi.iSubItem = 0;
ListView_SetExtendedListViewStyle(hLV,LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
dIndex=ListView_InsertItem(hLV,&lvi); lvi.mask = LVIF_TEXT;
lvi.iItem = dIndex;
lvi.iSubItem = 1;
lvi.pszText = TEXT("a2.txt");
ListView_SetItem(hLV,&lvi);索引值dIndex在第一行创建完时为0,在第二行创建完时为1,不论在显示checkbox中打不打勾,
使用函数ListView_GetCheckState(hLV,0)或ListView_GetCheckState(hLV,1)去查询两检查框状态,返回值都是-1,
不知是上面的程序出了错,还是ListView_GetCheckStat函数没用对?
//-------------创建表项-----------
lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_CENTER;
lvc.cx = 20;
lvc.pszText = TEXT ("");
lvc.iSubItem = 0;
SendMessage (hLV, LVM_INSERTCOLUMN, 0, (LPARAM)&lvc); lvc.mask |= LVCF_SUBITEM;
lvc.cx = 100;
lvc.pszText = TEXT ("文件名");
lvc.iSubItem = 1;
SendMessage (hLV, LVM_INSERTCOLUMN, 1, (LPARAM)&lvc);
//---------------加两行-------------------
lvi.mask = LVIF_IMAGE ;
lvi.iItem = 0;
lvi.iSubItem = 0;
ListView_SetExtendedListViewStyle(hLV,LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
dIndex=ListView_InsertItem(hLV,&lvi);
ListView_InsertItem(hLV,&lvi); lvi.mask = LVIF_TEXT;
lvi.iItem = dIndex;
lvi.iSubItem = 1;
lvi.pszText = TEXT("a1.txt");
ListView_SetItem(hLV,&lvi);
lvi.mask = LVIF_IMAGE ;
lvi.iItem = 1;
lvi.iSubItem = 0;
ListView_SetExtendedListViewStyle(hLV,LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
dIndex=ListView_InsertItem(hLV,&lvi); lvi.mask = LVIF_TEXT;
lvi.iItem = dIndex;
lvi.iSubItem = 1;
lvi.pszText = TEXT("a2.txt");
ListView_SetItem(hLV,&lvi);索引值dIndex在第一行创建完时为0,在第二行创建完时为1,不论在显示checkbox中打不打勾,
使用函数ListView_GetCheckState(hLV,0)或ListView_GetCheckState(hLV,1)去查询两检查框状态,返回值都是-1,
不知是上面的程序出了错,还是ListView_GetCheckStat函数没用对?
那你运行ListView_GetCheckState(hLV,0)或ListView_GetCheckState(hLV,1)的返回值是多少呢?
我是在一dialog中创建的listview,在主窗口中还设了一按钮,运行时按取按钮就执行ListView_GetCheckState(hLV,0)查询状态,但可能是按取按钮时,执行的是主窗口消息,listview子窗口的状态没保存。感觉上要响应WM_NOTIFY消息了!
没辙了,不知该怎么办了,求救!!!!
得到所有选中状态的item的ID,其中m_lstLogin是ListCtrl的变量
int nCount = m_lstLogin.GetItemCount ();
CString strID ;
m_strLoginID = _T("");
for(int i = 0 ;i < nCount ; i++)
{
if(ListView_GetCheckState(m_lstLogin.m_hWnd, i))
{
strID = m_lstLogin.GetItemText( i, 1 );
m_strLoginID += strID;
m_strLoginID += _T(",");
} }