void CUsers::OnDeleteuser()
{
int nItem;
POINT a;
nItem=m_list1.GetItemPosition(0,&a);
m_list1.DeleteItem(nItem);
}
这是我用来删除选中某一行的函数,但是不能删除第一行
举个例子:
1 yang 2
2 yang1 3
3 yang2 3
这是我listctrl控件中的的三行,我编译后只能删除2,3行,不能删除1行,诚不知其所然矣!望高手赐教!
{
int nItem;
POINT a;
nItem=m_list1.GetItemPosition(0,&a);
m_list1.DeleteItem(nItem);
}
这是我用来删除选中某一行的函数,但是不能删除第一行
举个例子:
1 yang 2
2 yang1 3
3 yang2 3
这是我listctrl控件中的的三行,我编译后只能删除2,3行,不能删除1行,诚不知其所然矣!望高手赐教!
CListCtrl::GetItemPositionBOOL GetItemPosition(int nItem,LPPOINT lpPoint) const返回值:如果成功,则返回非零值,否则为0。参数: nItem 要获取位置的项的索引值。
lpPoint 在视图坐标中接受项左上角位置POINT结构的地址,按视图坐标。 说明:获取列表视图项的位置。这个函数压根不是这么用的
if (pos == NULL)
TRACE0("No items were selected!\n");
else
{
while (pos)
{
int nItem = pList->GetNextSelectedItem(pos);
TRACE1("Item %d was selected!\n", nItem);
m_list1.DeleteItem(pos);
}
}
if (pos == NULL)
TRACE0("No items were selected!\n");
else
{
while (pos)
{
int nItem = m_list1.GetNextSelectedItem(pos);
TRACE1("Item %d was selected!\n", nItem);
m_list1.DeleteItem(pos);
}
}
终于解决了
非常感谢九楼的朋友,你是最可爱的人,我太爱你了,爱你一万年!
POSITION pos = m_list1.GetFirstSelectedItemPosition();
if (pos == NULL)
TRACE0("No items were selected!\n");
else
{
while (pos)
{
int nItem = m_list1.GetNextSelectedItem(pos);
TRACE1("Item %d was selected!\n", nItem);
m_list1.DeleteItem(nItem);//pos改成了nItem
}
}这样的代码不是说能删除多行吗?
但我运行后对删除单行是没问题了
对删除多行有问题,选定3行只删除2行,也就是会少删一行
想你应该能解决
POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
while(pos)
{
int nItem = m_ListCtrl.GetNextSelectedItem(pos);
m_ListCtrl.DeleteItem(nItem);
pos = m_ListCtrl.GetFirstSelectedItemPosition();
}
如果POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
while(pos)
{
int nItem = m_ListCtrl.GetNextSelectedItem(pos);
m_ListCtrl.DeleteItem(nItem);
pos = m_ListCtrl.GetFirstSelectedItemPosition();
}
这段代码中加入代码实现listctrl中删除一行的同时,对应的数据库中的一行也被删除
我连接数据库用的是MFC ODBC方式
请赐教,谢谢!
//这个需要你自己写数据库操作语句,删除ListCtrl的item的同时,执行对应的数据库删除语句。