指点一个简单的问题
我使用的CListCtrl控件作一列表;
用report方式;
用下面的方法添加多列
Column.mask=LVCF_FMT | LVCF_WIDTH |LVCF_TEXT|LVCF_SUBITEM ;
Column.fmt=LVCFMT_LEFT;
Column.cx=120;
Column.iSubItem=0;
Column.pszText="编 号";
m_ListCtrl.InsertColumn(0,&Column);
Column.iSubItem=1;
Column.pszText="名 称";
m_ListCtrl.InsertColumn(1,&Column);
但用
LV_ITEM lvitem;
lvitem.item=0;
lvitem.pszText="asdfasfasf";
m_ListCtrl.InsertItem(&lvitem);
添加子项;
程序运行无报错,但不显示添加文本内容。
为什么???
问题点数:80、回复次数:6Top
1 楼Fesd(傻蛋)回复于 2001-03-28 17:47:00 得分 10
lvitem.mask = LVIF_TEXT;
lvitem.pszText="asdfasfasf";
lvitem.cchTextMax = _tcslen(lvitem.pszText);
m_ListCtrl.InsertItem(....);Top
2 楼pyhjy()回复于 2001-03-28 17:52:00 得分 0
好像还不行Top
3 楼panda_w(好想睡啊!)回复于 2001-03-28 18:12:00 得分 10
我这里没有csdn,没有VC,所以无法调试,不过,你可以看看
http://www.vckbase.com/document/listview/index.html的几篇文档,关于怎么编辑子项的Top
4 楼yf_000(林临邻)回复于 2001-03-28 18:47:00 得分 10
lvitem.item=0; 应该是 lvitem.iItem=0; (可参照MSDN中LV_ITEM的结构)
也可如下定义:
int nItem=m_ListCtrl.InsertItem(0,"aaa");
m_ListCtrl.SetItemText(nItem,1,"bbb");
m_ListCtrl.SetItemText(nItem,2,"ccc");
m_ListCtrl.SetItemText(nItem,3,"ddd");Top
5 楼Tasehouny(阿甘)回复于 2001-03-28 19:29:00 得分 20
m_cListCtrl.InsertColumn(0,"第一列");//还有几个参数记不得了,可以设置对齐方式和列宽
m_cListCtrl.InsertColumn(1,"第二列");
m_cListCtrl.InsertColumn(2,"第三列");
int nItem=m_cListCtrl.InsertItem(0,"内容1");
m_cListCtrl.SetItemText(nItem,1,"内容2");
m_cListCtrl.SetItemText(nItem,2,"内容3");
Top
6 楼joke100(咱们去SLEEP吧...)回复于 2001-03-28 20:40:00 得分 30
原因是INSERTITEM还不够,因为LV_ITEM中的pszText成员仅是项文字的指针,并不负责为各列分派,即使你只有一列...
解决:
使用
BOOL CListCtrl::SetItemText( int nItem, int nSubItem, LPTSTR lpszText );
显式的为各列指定显示字符串
在你的程序后面添加下面的代码,考虑通用的情况:
for (int nItemIndex = 0; nItemIndex < 项数; nItemIndex++)
{
for (int nIndex = 0; i < 列数; i++)
m_cListCtrl.SetItemText(nItemIndex, nIndex, "我的CAPTION");
}
Top





