vc6 xp 上:
// delete
void CTransListCtrlDlg::OnButton1()
{
int itemselectednum=m_TransListCtrl.GetSelectedCount();
afxDump << itemselectednum << "\n";
int itemnum1=m_TransListCtrl.GetItemCount();
afxDump << itemnum1 << "\n";
int i;
for (i=itemnum1-1;i>=0;i--)
{
if (m_TransListCtrl.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
{
afxDump << "Item " << i << " will be deleted!\n";
//m_TransListCtrl.DeleteItem(i);
}
}
if( i<0 ) afxDump << "No item has been deleted!\n";
}
没问题!
void CDataHidingDlg::OnButtonDeleteimage()
{
// TODO: Add your control notification handler code here
int i,iselected;
int itemselectednum=m_list_imagecarrier.GetSelectedCount();
int itemnum1=m_list_imagecarrier.GetItemCount();
if (itemselectednum<1)
{
AfxMessageBox("请选择要删除的载体图像。");
return;
}
for (i=0;i<itemnum1;i++)
{
iselected=m_list_imagecarrier.GetItemState(i,LVIS_SELECTED);
if (iselected!=0)
m_list_imagecarrier.DeleteItem(i);
}
int itemnum2=m_list_imagecarrier.GetItemCount();
for (i=0;i<itemnum2;i++)
{
char ichar [25];
itoa(i+1,ichar,10);
m_list_imagecarrier.SetItemText(i,0,ichar);
}
}
上面的函数是“删除载体图像”按钮的函数,本来这个按钮是首先在列表中选择一行,然后点这个按钮就删除这一行了,这个功能是没问题,但是如果你不选择列表中的某一行而直接点“删除载体图像”按钮的话,列表中就自动删除一半的行,也就是如上图,只剩下3行了,我调试了一下,是函数GetSelectedCount的返回值出现问题。