对WIN32中ListView插入列数据的疑问

yxlovemoney 2014-06-30 07:37:10
首先代码是这样的

TCHAR *szColumnContent[COLUMN_NUM];// 接收列内容
HWND hListView;
LVCOLUMN lvColumn; // 列表控件所需的结构体
LVITEM lvItem; // 子项

// 取得LIST句柄
hListView = GetDlgItem(hDlg, IDC_LIST_ORDER_INFO);

lvColumn.mask = LVCF_TEXT + LVCF_FMT + LVCF_WIDTH + LVCF_SUBITEM; // 标志位:使文本,文件对齐方式,列宽可用
lvColumn.fmt = LVCFMT_CENTER; // 中间对齐
lvColumn.cx = 90;
for ( i = 0; i < COLUMN_NUM; ++i)
{
// 插入列标题
lvColumn.pszText = szColumnName[i];
ListView_InsertColumn(hListView, i, &lvColumn);
}

// 中间数据库操作


// 读取完数据库信息后把其加入LISTVIEW子项
lvItem.mask = LVIF_TEXT;
for ( i = 0; i < COLUMN_NUM; ++i)
{
lvItem.iItem = i; // 该成员代表行
for (int j = 0; j < COLUMN_NUM; ++j)
{
lvItem.iSubItem = j; // 代表每行的列
lvItem.pszText = szColumnContent[j];
ListView_InsertItem(hListView, &lvItem);
}
}


这样写应该没问题的啊,以前我也是这样写的,listview的属性也是像以前一样的设置,当然也调试过,数据是正常取了出来,放到数组里面, 但是数据出来后却是这样显示



只有一列数据放了进去,后面的列全部放不上,请问到底是什么问题啊?
...全文
334 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxlovemoney 2014-06-30
  • 打赏
  • 举报
回复
那就奇怪了,以前我写的时候都没用到ListView_SetItemText这个函数啊 然后我找回以前写的项目打开一看,

lvItem.iSubItem = 0;    // 代表每行的列
			wsprintf(szItemInfo, "%s", mySections->Name);
			lvItem.pszText = szItemInfo;                                   // 名称
            ListView_InsertItem(hwndList, lpLvItem);                       // 向相应列插入内容,插第一列需要这个
            lvItem.iSubItem = 1;
            wsprintf(szItemInfo, "%08x", mySections->VirtualAddress);      // RVA
            lvItem.pszText = szItemInfo;                                
            ListView_SetItem(hwndList, lpLvItem);                          // 向相应列插入内容,插入同一行其它列用setItem
才发现原来是这样。我用的是ListView_SetItem 估计跟 ListView_SetItemText差不多吧。 先谢谢了,我回去再看看。
fishion 2014-06-30
  • 打赏
  • 举报
回复
lvItem.mask = LVIF_TEXT; for ( i = 0; i < COLUMN_NUM; ++i) { lvItem.iItem = i; // 该成员代表行 lvItem.iSubItem = 0; // 代表每行的列 lvItem.pszText = szColumnContent[j]; ListView_InsertItem(hListView, &lvItem); for (int j = 1; j < COLUMN_NUM; ++j) { ListView_SetItemText(hListView, i, j,szColumnContent[j]); } }
ouyh12345 2014-06-30
  • 打赏
  • 举报
回复
一个函数内,不要做那么多事情
ouyh12345 2014-06-30
  • 打赏
  • 举报
回复
插入或删除列后,再更新,需要重新获得索引

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧