【发布时间】:2018-01-30 14:26:22
【问题描述】:
我正在报表视图 (MFC) 中生成 CListCtrl。它加载得很好,我可以通过拖动标题来重新排序列。我已经做到了,因此单击列标题会删除该列 - 除了第一列(最左侧)之外,这同样可以正常工作。这里的标题被删除了,但下面的数据没有改变——实际上最后一列的数据被删除了:
之前:
Header1 Header2 Header3
Data1 Data2 Data3
尝试删除第一列后:
Header2 Header3
Data1 Data2
在创建列开始后,我将像这样设置表格的其余部分:
void MyClass::InsertItem(int x, int y, CString &str)
{
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = y;
lvi.iSubItem = x;
lvi.pszText = (LPTSTR)(LPCTSTR)(str);
int result;
if(x == 0) {
result = mCSVListCtrl.InsertItem(&lvi);
}
else {
result = mCSVListCtrl.SetItem(&lvi);
}
}
这似乎可以创建表。然后当一个标题被点击时:
void MyClass::OnLvnColumnclickList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
mCSVListCtrl.DeleteColumn(pNMLV->iSubItem);// This IS getting zero
*pResult = 0;
}
【问题讨论】:
-
向我们展示代码。您刚刚从标题控件而不是列表视图中删除列的接缝!
-
这绝对是我要从中删除的 CListCtrl。还在疑惑——一定是与item和subitem的区别有关?