Jochen Arndt
Вы должны обменять предметы. Получите содержимое элемента по индексу (индекс 0 и 3 в вашем примере) в переменные и установите их с помощью другой переменной.
Как это сделать, зависит от вашего стиля списка (отчет или нет) и объема информации, хранящейся в каждом элементе (текст, изображение, флажок, пользовательские данные).
Для списка отчетов вы также должны перебирать столбцы и обмениваться текстом для каждого столбца.
Видеть Класс CListCtrl[^] для функций, которые будут использоваться. Кандидаты есть GetItemText
и SetItemText
для текста (Текст столбцов с режимом отчета), GetItemData
и SetItemData
для пользовательских данных или GetItem
и SetItem
для нескольких настроек (изображение, состояние, текст, формат).
Пример (предполагая, что код является частью CListView
производный класс):
/* Top item */
int item1 = 0;
/* Selected item (single selections only) */
int item2 = GetListCtrl().GetNextItem(-1, LVNI_SELECTED);
/* Get data for item1 and item2 into variables */
/* Set data */
/* For report style: */
int columns = GetListCtrl().GetHeaderCtrl().GetItemCount();
for (int i = 0; i < columns; i++)
{
CString str1 = GetListCtrl().GetItemText(item1, i);
CString str2 = GetListCtrl().GetItemText(item2, i);
GetListCtrl().SetItemText(item1, i, str2);
GetListCtrl().SetItemText(item2, i, str1);
}
// Optionally change selection state