【问题标题】:Error deleting first column in CListCtrl删除 CListCtrl 中的第一列时出错
【发布时间】: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的区别有关?

标签: mfc clistctrl


【解决方案1】:

没有任何代码,很难找到原因。

我猜你用的是CListCtrl::GetHeaderCtrl::DeleteItem

你必须使用CListCtrl::DeleteColumn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多