![]() |
|
![]() ![]() ![]() |
|
EvgenyTS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Может подскажете как выделить несколько элементов в CTreeCtrl для последующего их использования?
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Tree View, в отличие от List View, не поддерживает выделение нескольких элементов. Т.е. поставить выделение-то можно (программно) - установить состояние TVS_SELECTED, но вот поддержка одновременного выделения и перебор - это задача программиста. Я делаю так: 1) завожу массив выделенных в текущий момент элементов и сама им управляю 2) ловлю TVN_SELCHANGED, где проверяю, нажат ли SHIFT / CTRL (чтобы множественное выделение делалось стандартным способом) и в зависимости от этого обновляю свою коллекцию выделенных элементо (при этом все старое выделение снимаю, а новое ставлю).
-------------------- ... |
|||
|
||||
EvgenyTS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
если можешь кинь маленький примерчик. Мне нужно выделить только первые родительские узлы. Спасибо
Это сообщение отредактировал(а) EvgenyTS - 27.2.2009, 09:59 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
-------------------- ... |
|||
|
||||
EvgenyTS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Спасибо. Разбираюсь...
вот элемент m_hStartItem. Что за он. Не могу найти объявление. Я подразумеваю что HTREEITEM. Но что он принимает? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Это первый выделенный элемент. Запоминаем его, когда первый раз нажимаем с SHIFT. По-моему, из кода это ясно.
-------------------- ... |
|||
|
||||
EvgenyTS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Ясно.
Вот создаю векстор HTREEITEM vector<HTREEITEM>m_Selection; при компил. пишет error C2027: use of undefined type '_TREEITEM' Как правильно использовать? Это сообщение отредактировал(а) EvgenyTS - 27.2.2009, 18:20 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Может, написал неправильно? И вообще, что за детский сад?
![]() -------------------- ... |
|||
|
||||
Tor887 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
Если смогу достучаться ,) Проблемка: при ctrl вроде в список добавляется, а вот выделить не получается.. При этом пробовал вместо TVIS_SELECTED -> TVIS_BOLD - работает.... Хм, интересно, что с шифтом работает.... ![]() Это сообщение отредактировал(а) Tor887 - 14.11.2011, 12:38 |
||||
|
|||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Не пойму в чем проблема
-------------------- ... |
|||
|
||||
Tor887 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
В ф-ии SelectItem ()
Делаем SetItemState(hItem, TVIS_SELECTED, TVIS_SELECTED), при этом hItem - текуший, т.е. в случае нажатого ctrl-а уже после переключения, а прошлый уже отключился! Я попробовал запоминать старый и здесь делать etItemState(hOldItem, TVIS_SELECTED, TVIS_SELECTED), но вылазят некоторые другие геморы... ![]() Но помаленьку продвигаюсь, вроде... ,) |
|||
|
||||
Tor887 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.11.2011 Репутация: нет Всего: нет |
Вот еще какая штука: т.к. всё это сделано как реакция на изменение выделения - OnSelChanged - соответственно нельзя изменить состояние последнего выделенного элемента. Например выделили несколько элементов - не удастся снять выделение с последнего, потому что не вызывается OnSelChanged.
Пробовал решить эту проблему через OnNMClick, но там почему-то не работает фишка с вытаскиванием хендла на элемент.. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |