如图 当点击添加按钮添加一些信息后,现在想多行删除,代码如下:
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
if (!pList->GetSelectedCount())
{
AfxMessageBox(_T("请选择一行再删除"));
return;
}
POSITION pos = pList->GetFirstSelectedItemPosition();
while (pos)
{
int nSel = pList->GetNextSelectedItem(pos);
CString str = pList->GetItemText(nSel, 0);
if (IDNO == AfxMessageBox(_T("确定要删除") + str + _T("的信息吗?"), MB_YESNO))
continue;
pList->DeleteItem(nSel);
}这里工号定义的是int型当选中多项后,选择删除,出现问题:删除了没有选中的项。经过分析发现当删除第一项后,pos指向下一个位置,但此时第一个选中的已经被删除,导致pos指向位置发生错位,第二个删除的已不是本应该删除的,导致删除问题。这个应该怎么解决呢?谢谢大家解答。
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
if (!pList->GetSelectedCount())
{
AfxMessageBox(_T("请选择一行再删除"));
return;
}
POSITION pos = pList->GetFirstSelectedItemPosition();
while (pos)
{
int nSel = pList->GetNextSelectedItem(pos);
CString str = pList->GetItemText(nSel, 0);
if (IDNO == AfxMessageBox(_T("确定要删除") + str + _T("的信息吗?"), MB_YESNO))
continue;
pList->DeleteItem(nSel);
}这里工号定义的是int型当选中多项后,选择删除,出现问题:删除了没有选中的项。经过分析发现当删除第一项后,pos指向下一个位置,但此时第一个选中的已经被删除,导致pos指向位置发生错位,第二个删除的已不是本应该删除的,导致删除问题。这个应该怎么解决呢?谢谢大家解答。
解决方案 »
- wireshark FCS校验码 (crc-32)的计算,求解!
- MCChart空间的坐标问题
- 下载的ftp客服端程序如何使用??
- 在MFC中出现如图问题,什么原因?
- 我已经做好一个非计算机专业学生讨论学习计算机的论坛
- 怎样把list box设置成为4列?然后在每一行的不同列可以显示字符?每一行只能有一列显示字符?
- 寻找oledb数据库例程
- 在vc++ 和 c builder++之间如何选择??
- 求救:YUV转为灰度图的功能写出来了,就是调用的时候无法写入到输出缓存pGrayBuf中.在线等~~~~~~~
- 为什么我的对话框不能正常响应WM_CHAR 消息?
- mciSendString
- 大侠帮忙看看:vc视图用bitblt绘制背景后再动态创建CComboBox控件,控件看不到是怎么回事?
修改代码如下
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
if (!pList->GetSelectedCount())
{
AfxMessageBox(_T("请选择一行再删除"));
return;
}
POSITION pos = pList->GetFirstSelectedItemPosition();
while (pos)
{
int nSel = pList->GetNextSelectedItem(pos);
CString str = pList->GetItemText(nSel, 0);
if (IDNO == AfxMessageBox(_T("确定要删除") + str + _T("的信息吗?"), MB_YESNO))
continue;
pList->DeleteItem(nSel);
pos = pList->GetFirstSelectedItemPosition(); }
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。