CListCtrl添加Item的怪异现象
使用insertitem,如果按照0,1,2,3,4......的顺序添加,前面添加的项目就看不到显示的内容了。
要是一直都往index=0的地方添加,前面添加的内容会被排在下一行。
但是我想用上面的那种方法
以下是我的程序:
void CListReportView::OnDataAdd()
{
// TODO: Add your command handler code here
CAddDlg addDialog;
if(addDialog.DoModal()==IDOK)
{
if(addDialog.m_strName=="")
{
AfxMessageBox("请输入名字");
return;
}
if(addDialog.m_strFAX=="")
{
AfxMessageBox("请输入传真号码");
return;
}
GetListCtrl().InsertItem(nIndex,"nIndex",1);
GetListCtrl().SetItemText(nIndex,1,addDialog.m_strName);
GetListCtrl().SetItemText(nIndex,2,addDialog.m_strFAX);
GetListCtrl().SetItemText(nIndex,3,addDialog.m_strNote);
GetListCtrl().Update(nIndex++);
}
}
前面添加的item的内容就是空白的了,奇怪了
问题点数:100、回复次数:14Top
1 楼feijunjun(军仔)回复于 2002-04-08 08:29:37 得分 5
Update 注释掉看看?Top
2 楼Tasehouny(阿甘)回复于 2002-04-08 08:49:59 得分 10
nIndex = GetListCtrl().GetItemCount()-1;
GetListCtrl().InsertItem(nIndex,"nIndex",1);
GetListCtrl().SetItemText(nIndex,1,addDialog.m_strName);
GetListCtrl().SetItemText(nIndex,2,addDialog.m_strFAX);
GetListCtrl().SetItemText(nIndex,3,addDialog.m_strNote);
这样就不会出错了
Top
3 楼stavck(在河之洲)回复于 2002-04-08 08:54:09 得分 5
你的nIndex可能是无效的,开始时应付-1;Top
4 楼eastrock(东方之石)回复于 2002-04-08 09:07:35 得分 5
nIndex的值是多少,你没有说明Top
5 楼lishush(☆↑苯鸟先飞↑☆)回复于 2002-04-08 09:09:00 得分 5
GetListCtrl().InsertItem(nIndex,"nIndex",1); 语句返回的是当前插入的索引号,你要注意这个!Top
6 楼guanjinke(纶巾客 blog:www.guanjinke.com)回复于 2002-04-08 09:10:33 得分 20
用这种方式不行吗?
int index;//最初的索引初始化
LVITEM item;
item.iItem=index;
item.iItem=1;
item.mask=LVIF_TEXT;
item.pszText=addDialog.m_strName;
GetListCtrl().InsertItem(&item);
item.iItem=2;
item.pszText=addDialog.m_strFAX;
GetListCtrl().SetItem(&item);
item.iItem=3;
item.pszText=addDialog.m_strNote;
GetListCtrl().SetItem(&item);
index++;//下一条记录的索引
Top
7 楼wuzhibiao(流氓兔儿)回复于 2002-04-08 12:45:25 得分 0
nIndex我赋的初值是0。Top
8 楼wuzhibiao(流氓兔儿)回复于 2002-04-08 15:14:41 得分 0
还是不行啊,我试了你们的方法Top
9 楼EetyChen(三刀主)回复于 2002-04-08 15:47:45 得分 25
MSDN上有个ctrlext.cpp .h文件,里面有个CListCtrlEx类,用它来对LISTCTRL进行增删都很方便,试试去吧
要找不着的话留下妹儿我发给你Top
10 楼wuzhibiao(流氓兔儿)回复于 2002-04-08 17:21:36 得分 0
三刀主
wuzhibiao@21cn.com
你发给我吧,多谢你了Top
11 楼wuzhibiao(流氓兔儿)回复于 2002-04-08 17:23:45 得分 0
EetyChen(三刀主)
wuzhibiao@21cn.com
多谢你了Top
12 楼EetyChen(三刀主)回复于 2002-04-09 14:25:52 得分 0
改得怎样?
还是没收到?Top
13 楼cococut(小鱼的天空)回复于 2002-04-09 14:45:18 得分 25
试试:
LVITEM lvItemlocal;
lvItemlocal.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvItemlocal.state = 0;
lvItemlocal.stateMask = 0;
lvItemlocal.iImage = 0;
lvItemlocal.iSubItem = 0;
lvItemlocal.iItem = 0;
lvItemlocal.pszText = (LPSTR)(LPCTSTR)("ddddd");
GetListCtrl().InsertItem(&lvItemlocal);
Top
14 楼wuzhibiao(流氓兔儿)回复于 2002-04-09 20:55:31 得分 0
问题解决了,是我的错,没有把设置Listctrl的属性的程序贴出来,其实关键不在于我怎么添加,而是我设置了升序排列,而我的item中的第一个subitem又是给的相同的值"nIndex"所一就这样了
不过还是感谢大家的回复,多学了几种方法。
再次感谢Top




