Ошибка при удалении первого столбца в CListCtrl

Я создаю CListCtrl в представлении отчета (MFC). Он загружается нормально, и я могу переупорядочивать столбцы, перетаскивая заголовки. Я сделал так, что щелчок по заголовку столбца удаляет столбец - опять же, это отлично работает, за исключением первого (крайнего левого) столбца. Здесь заголовок удаляется, но данные под ним не меняются - фактически удаляются данные из последнего столбца:

До :

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;
}

person gregston    schedule 22.08.2017    source источник
comment
Покажи нам код. Похоже, что вы только что удалили столбец из элемента управления заголовком, а не из списка!   -  person xMRi    schedule 22.08.2017
comment
Это определенно тот CListCtrl, из которого я пытаюсь удалить. Все еще озадачены - должно быть, какое-то отношение к разнице между элементом и подпунктом?   -  person gregston    schedule 25.08.2017


Ответы (1)


Без кода сложно найти причину.

Я полагаю, вы использовали CListCtrl::GetHeaderCtrl::DeleteItem.

Вы должны использовать CListCtrl::DeleteColumn

person xMRi    schedule 22.08.2017