删除CListCtrl中的第一列时出错

时间:2017-08-22 10:33:46

标签: mfc clistctrl

我正在报表视图(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;
}

1 个答案:

答案 0 :(得分:0)

没有任何代码,找到理由很复杂。

我想你使用了CListCtrl::GetHeaderCtrl::DeleteItem

您必须使用CListCtrl::DeleteColumn