我正在报表视图(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);
}
}
这似乎创建了表OK。然后单击标题时:
void MyClass::OnLvnColumnclickList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
mCSVListCtrl.DeleteColumn(pNMLV->iSubItem);// This IS getting zero
*pResult = 0;
}
答案 0 :(得分:0)
没有任何代码,找到理由很复杂。
我想你使用了CListCtrl::GetHeaderCtrl::DeleteItem
。
您必须使用CListCtrl::DeleteColumn