请教一个列表视图的问题
我在列表视图的OnInitialUpdate()函数中,对列表视图做了如下初始化工作:
ASSERT(GetStyle() & LVS_REPORT);
/////设置首列
GetListCtrl().InsertColumn(0,_T("name"),LVCFMT_LEFT);
////设置第二列
LVCOLUMN col;
col.mask = LVCF_FMT | LVCF_TEXT;
col.pszText = _T("sex");
col.fmt = LVCFMT_LEFT;
GetListCtrl().InsertColumn(1, &col);
////设置三列
col.pszText = _T("age");
GetListCtrl().InsertColumn(2, &col);
GetListCtrl().SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
GetListCtrl().SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
GetListCtrl().SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);
我列表视的一个成员函数中,想要重新设置列表视的列,如下:
for(int i = 0;i<3;i++)
{
GetListCtrl().DeleteColumn(0);
}
GetListCtrl().InsertColumn(0,_T("big),LVCFMT_LEFT);
LVCOLUMN col;
col.mask = LVCF_FMT | LVCF_TEXT;
col.pszText = _T("middle");
col.fmt = LVCFMT_LEFT;
GetListCtrl().InsertColumn(1, &col);
col.pszText = _T("small");
GetListCtrl().InsertColumn(2, &col);
GetListCtrl().SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
GetListCtrl().SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
GetListCtrl().SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);
可是不知道为什么,列表视图显示的始终是初始时的样子。请教列位高手,这是为什么呢?如何重新设置列表视图的列呢?谢谢!!
问题点数:100、回复次数:3Top
1 楼fengqinggao(风清高)回复于 2004-12-02 23:08:11 得分 100
首先提一个建议,在你的ClistView类中添加一个CListCtrl类的指针,然后在OnInitialUpdate()中用GetListCtrl()对其进行赋值,这样以后使用起来就方便了,而没有必要每次都重新获取,编程麻烦而且影响性能。
其次,删除所有内容,也没有必要用循环,直接用DeleteAllItems()函数就可以了;
再次,我用InsertItem()一直没有问题,你不妨用这个试一试,呵呵Top
2 楼zhaolaoxin()回复于 2004-12-03 00:22:17 得分 0
GetListCtrl().DeleteColumn(0);写错了,应该是iTop
3 楼fengqinggao(风清高)回复于 2004-12-03 00:45:34 得分 0
楼上的,我一开始也是这么认为,后来一想,删除第0列后原来的第1列就变成第0列,所以觉得这个语句没错,不过搞不清楚为什么没有没有效果,没有尝试过Top




