CListCtrl无法动态添加数据,即不能用setitemtext()添加

voidListview::OnInitialUpdate(){CListView::OnInitialUpdate();CListCtrl&theCtrl=GetLis... void Listview::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl& theCtrl=GetListCtrl();
theCtrl.ModifyStyle(0, LVS_REPORT);
DWORD dwStyle;
dwStyle = theCtrl.GetExtendedStyle();
dwStyle|=LVS_EX_FULLROWSELECT;
theCtrl.SetExtendedStyle(dwStyle);
theCtrl.InsertColumn(0,_T("序号"),LVCFMT_LEFT);
theCtrl.InsertColumn(1,_T("捕获时间"),LVCFMT_LEFT);
theCtrl.InsertColumn(2,_T("包长度"),LVCFMT_LEFT);
。。。
}
void Listview::OnStart(void)
{ setlist();
CListCtrl& theCtrl=GetListCtrl();
theCtrl.DeleteAllItems();
}
void Listview::setlist(void)
{
CListCtrl& m_list=GetListCtrl();//在这里开始有问题,编译能通过,但是列表没有显示asdfasfa
m_list.InsertItem(0,_T("01"));
m_list.SetItemText(0,1,_T("asdfasfa"));
}
//列表的显示没有问题,如图
展开
 我来答
zwb32167
2011-05-01 · TA获得超过328个赞
知道答主
回答量:136
采纳率:0%
帮助的人:164万
展开全部
void Listview::OnStart(void)
{ setlist();
CListCtrl& theCtrl=GetListCtrl();
theCtrl.DeleteAllItems();
}
void Listview::setlist(void)
{
CListCtrl& m_list=GetListCtrl();//在这里开始有问题,编译能通过,但是列表没有显示asdfasfa
m_list.InsertItem(0,_T("01"));
m_list.SetItemText(0,1,_T("asdfasfa"));
}

SetList函数里面有GetListCtrl,这个和OnStart函数里调用的GetListCtrl反回的是同一个ListCtrl对象的引用,虽然两个名字不一样,但是实际是代表的同一个对象。由于调用了SetList后,又调用了DeleteAllItem,把刚添加的项删除了,因此没有显示。我想你调用的GetListCtrl调用错了,你再检查下,要获取两个不同的ListCtrl怎么可能用同样的函数。。。
xwnjvvl
2011-05-12 · TA获得超过961个赞
知道小有建树答主
回答量:1073
采纳率:0%
帮助的人:0
展开全部
返回值
如果成功是非0,否则是0
参数
nitem
将被设置文本的项目的索引。(这是指行的索引,哪一行)
nSubItem
子项目的索引(这是指列,这一行的哪一列)
lpszText
指向包含新文本的字符串(要写入的字符串指针,直接传递CString对象就可以了)

InsertItem就是插入一行,你在向CListCtrl中加如一行数据的时候,必须先要调用这个函数。先插入一行,然后在向这一行中写入数据!

英文看不懂可以用金山词霸啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7b23e45
2011-04-30 · TA获得超过204个赞
知道答主
回答量:52
采纳率:0%
帮助的人:37.6万
展开全部
在这种情况下:
1.你应该给list control添加一个控件类型的变量,方便使用。
2.你看看SetItemText的返回值是什么,应该是成功了的,但是显示不了,应该
m_tree.SetRedraw(FALSE);
//do erase and insert operation
m_tree.SetRedraw(TRUE);
m_tree.RedrawWindow();
试试应该行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ziyang64
2011-04-28 · TA获得超过962个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:815万
展开全部
应该换一下顺序吧:

setlist(); //这里添加了数据
CListCtrl& theCtrl=GetListCtrl();
theCtrl.DeleteAllItems(); // 这里全部删除了。
追问
应该不是这个问题。因为改了顺序之后还是不对。但我调试的时候发现在void Listview::OnInitialUpdate()定义的thectrl和void Listview::setlist(void)的m_list不同。这会不会出问题?如果是那该怎么取得初始化CListCtrl的thectrl值?
追答
把这两行放在OnInitialUpdate中试试吧:
m_list.InsertItem(0,_T("01"));
m_list.SetItemText(0,1,_T("asdfasfa"));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式