Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка в CListCtrl 
:(
    Опции темы
keisik
Дата 27.3.2002, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Код

static int CALLBACK
CompProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort){

  // lParamSort contains a pointer to the list view control.
  // The lParam of an item is just its index.
ASSERT(nColumn>=0);
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
CString strItem1 = pListCtrl->GetItemText(lParam1, nColumn);
CString strItem2 = pListCtrl->GetItemText(lParam2, nColumn);
return bAsc?strcmp(strItem1, strItem2):strcmp(strItem2,strItem1);
}

void CWRegimeDlg::OnColumnclickApps(NMHDR* pNMHDR, LRESULT* pResult){

NM_LISTVIEW* pNMLV = (NM_LISTVIEW*)pNMHDR;
nColumn==pNMLV->iSubItem?bAsc=!bAsc:nColumn=pNMLV->iSubItem;
m_LCApps.SortItems(CompProc,(LPARAM) &m_LCApps);
*pResult = 0;
}


Вот так, содрав буквально поностью из MSDN-а функцию CompProc, я пытаюсь пересортировывать данные в ЛистКонтроле по клику на заголовок. Работать не хочет. Почему? Вернее, функция сравнения вызывается, но каждый раз lParam1 и lParam2 - нули. Чего ещё надо? Или как это сделать (если всё неправильно)?
--------------------
...None of that can stop us now,we will make it through somehow...
PM MAIL   Вверх
keisik
Дата 27.3.2002, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Разобрался...
--------------------
...None of that can stop us now,we will make it through somehow...
PM MAIL   Вверх
Lion
Дата 28.3.2002, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.3.2002

Репутация: 2
Всего: 2



А что было??
PM MAIL   Вверх
keisik
Дата 28.3.2002, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



--------------------
...None of that can stop us now,we will make it through somehow...
PM MAIL   Вверх
Lion
Дата 28.3.2002, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 25.3.2002

Репутация: 2
Всего: 2



Большой тханкс   :)  :)  :)
PM MAIL   Вверх
Rickert
Дата 4.10.2006, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



У меня сейчас тажа проблема. Ссылка битая на фёрстСтепс.дот.ру Что неправильно-то было в коде? Я вроде, при добавлении в таблицу везде проставляю этот lParam = i++; Где i - переменная типа int. smile 

Это сообщение отредактировал(а) Rickert - 4.10.2006, 05:34


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Earnest
Дата 4.10.2006, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Неправильно то, что в функцию передаются user-data, связанные с итемами, а они не были проставлены (видимо).
Может, ты флаг LVIF_PARAM забываешь при вставке итемов?


--------------------
...
PM   Вверх
Rickert
Дата 6.10.2006, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Цитата

Может, ты флаг LVIF_PARAM забываешь при вставке итемов?

Имеено его я и забывал. Но теперь проблема такая. Вот как я добавляю item'ы с subitem'ами:
Код

...
    while(...)
    {
        _item.mask = LVIF_TEXT | LVIF_PARAM;
        _item.pszText = "Be good!"
        _item.iSubItem = 0;
        _item.lParam = i++;
        m_Table.InsertItem(&_item);

        _item.pszText = "Surf!"
        _item.iSubItem++;
        m_Table.SetItem(&_item);

        _item.pszText = "Аминь!"
        _item.iSubItem++;
        m_Table.SetItem(&_item);

        _item.pszText = "eNOT";
        _item.iSubItem++;
        m_Table.SetItem(&_item);
    }
...

В результате чего, добавляется только первая колонка с фразой "Be good", а остальные просто пустые. Это появляется после установки флага LVIF_PARAM. Why? Не увеличивать же lParam при каждом subItem'е? Всё равно пробовал втупую - результата NULL.

Это сообщение отредактировал(а) Rickert - 6.10.2006, 04:23


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 6.10.2006, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Теперь всё работает. Надо было по-другому элементы добавлять:
Код

...
        _item.mask = LVIF_TEXT | LVIF_PARAM;
        _item.pszText = "ддд";
        _item.iSubItem = 0;
        _item.lParam = i++;
        m_Table.InsertItem(&_item);

        m_Table.SetItemText(_item.iItem, ++(_item.iSubItem), "ццц");

        m_Table.SetItemText(_item.iItem, ++(_item.iSubItem), "ййй");

        m_Table.SetItemText(_item.iItem, ++(_item.iSubItem), "йцу");
...



--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Earnest
Дата 6.10.2006, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Можно оставить и первый вариант, но перед первым SetItem переустанавливать маску: item.mask = LVIF_TEXT.
Кроме того, все эти функции возвращают значение: SetItem -> BOOL, InsertItem -> номер элемента. Так что если что-то не получается, начинать нужно с того, что смотреть на возвращаемые значения.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.