Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Сортировка в CListCtrl |
Автор: kometa_triatlon 2.6.2005, 03:02 |
Часто встречается такая фишка: рядом с названием одной из колонок CListCtrl ( стиль report ) есть небольшой треугольник. Нажатие на хидер устанавливает сортировку списка по этому полю, повторное нажатие меняет направление сортировки. Ну вы поняли о чем я. Как это сделать? Есть стандартные функции или нужно ловить событие нажатия на заголовок и писать свою функцию сортировки? Может есть у кого пример кода? |
Автор: kometa_triatlon 2.6.2005, 04:57 |
Кое-что нашел в rsdn... Но остается два вопроса. Как узнать, на хидер какого столбца нажали? И как вывести треугольник? |
Автор: Lion 2.6.2005, 09:13 |
Вкратце: 1. Обрабатывается сообщение LVN_COLUMNCLICK списка. Там приходит структура, в которой есть индекс столбца. 2. Значок рисуешь сам , подставляя изображение с прозрачным фоном в CHeaderCtrl списка. 3. Еще надо написать CALLBACK функции сравнения строк списка. Код есть, но он в проекте. Пример могу написать, к вечеру. Если сильно надо, обращайтесь. ![]() |
Автор: kometa_triatlon 2.6.2005, 12:30 | ||||
Сильно надо!!! Первый раз работаю с CListCtrl, нужен пример. Ну план понятен, но реализовать я его не смогу ![]()
Название поля узнаю методом тыка ![]()
А вот здесь не понял. Точнее понял, но не знаю как сделать... |
Автор: Lion 2.6.2005, 14:07 |
Завтра с утра. |
Автор: kometa_triatlon 2.6.2005, 23:45 |
![]() Завтра с утра я уже сдам прогу... Ну все равно, хоть научусь. |
Автор: St. Andrew 3.6.2005, 01:39 |
kometa_triatlon, а можешь примерчик выложить? А то мы сегодня полдня пытались заставить работать CListCtrl и ничего в него толком не вывелось... ![]() ![]() |
Автор: Lion 3.6.2005, 06:25 | ||
Ну блин Семен Семеныч, где ж ты раньше был. ![]() ![]() Файл прилагаю. Там в общем не все так просто. ![]() P.S. Код сильно не пинать. |
Автор: kometa_triatlon 3.6.2005, 06:47 |
St. Andrew Нетрудно ![]() Lion Ну ты все равно успел ![]() ![]() |
Автор: Lion 3.6.2005, 06:49 | ||
Буду следить за форумом, если что не понятно пиши (можешь прям с кусками кода). |
Автор: kometa_triatlon 3.6.2005, 06:59 |
Мыло только что отправил, пример посмотрел, понравилось ![]() Всем спасибо ![]() |
Автор: St. Andrew 3.6.2005, 16:07 |
kometa_triatlon, Большое спасибо! ![]() |
Автор: kometa_triatlon 4.6.2005, 23:11 | ||||
Самое грустное, это то, что у меня это код не заработал ![]() Пример работает нормально, но как только перенес код, сортировка кончилась ![]() Следствие показало, что проблема здесь:
Обе строки принимают одно значение (если конкретнее - текст первого элемента списка) Не понимаю... ![]()
|
Автор: Lion 6.6.2005, 04:55 |
Сори был в offline. Ты при заполнении списка делаешь SetItemData(…)? Если нет, то у тебя для всех Item в функцию сортировки приходят нули, автоматически подставленные при добавлении Item-ов. ![]() Посмотри функцию FillList() в примере. |