Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetSelectedItem() в OnSelchangingTree 
V
    Опции темы
DominiK
Дата 27.12.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

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



Сабж. Нужно получить HTREEITEM текущего элемента дерева, не нового, на который переключаемся, а текущего.
GetSelectedItem(); возвращает 0. В Selchanged он работает нормально. вот пример того что имею ввиду:
Код

void CTreeDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
    for(int i = 0; i < static_cast<int>(tab_vector.size()); i ++)
    {
        HTREEITEM Item = Tree.GetSelectedItem();


Использовал GetSelectedItem() т.к работал до этого с CTabCtrl и там была аналогичная ситуация, я использовал GetCurSel, и от индекса уже отталкивался.

Это сообщение отредактировал(а) DominiK - 27.12.2008, 19:34
PM MAIL   Вверх
DominiK
Дата 28.12.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

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



Короче пока гуру не отписался, кто сталкивался с подобной проблемой - временное решение это создания объекта класса HTREEITEM, и обновление его при каждом OnSelected.

Пысы. Тема актуальна

Это сообщение отредактировал(а) DominiK - 28.12.2008, 12:02
PM MAIL   Вверх
Earnest
Дата 29.12.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я не совсем тебя поняла. Всегда использовала GetSelectedItem без каких-либо проблем. Другое дело, что выделенный элемент есть не всегда - в отличие от таб-контрола, где какая-то закладка всегда активна...
А в дереве по-умолчанию нет выделенного элемента - пока ты его не назначишь програмно или тыканием.

Добавлено через 1 минуту и 11 секунд
Интересно, зачем в цикле по i каждый раз спрашивать GetSelectedItem...

Добавлено через 7 минут и 8 секунд
Только что заметила, что в заголовке темы указано SelChanging. Если речь идет об обработке уведомления TVN_SELCHANGING, то вся текущая информация поступает вместе с уведомлением - в LPARAM:
Цитата

The itemOld and itemNew members contain valid information about the currently selected item and the newly selected item. 



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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

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



Цитата(Earnest @ 29.12.2008,  19:59)
Цитата

Добавлено @ 20:00
Интересно, зачем в цикле по i каждый раз спрашивать GetSelectedItem...


Брр у меня в коде она(строка) поднята над циклом, не помню как она сюда попала smile 
В остальном спасибо, уже разобрался smile 

Это сообщение отредактировал(а) DominiK - 29.12.2008, 21:22
PM MAIL   Вверх
EvgenyTS
Дата 5.2.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



хотел спросить. А как программно в дереве установить курсор на последний элемент? И чтоб он не пропадал при смене фокуса. (т.е у меня программа работает в фоне, я установил курсор на элементе. Потом добавились другие элементы)
PM MAIL   Вверх
Earnest
Дата 6.2.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Поставь дереву стиль TVS_SHOWSELALWAYS, и фокусный элемент будет всегда подсвечиваться.
А что касается как найти - перебери все ветви первого уровня, у последний - всех детей и т.д., пока не найдешь самый распоследний.


--------------------
...
PM   Вверх
EvgenyTS
Дата 6.2.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



сейчас получается что я элемент выделяю и он становится в синей рамочке. После смены фокуса он становится серым и я не имею к ниму доступа(для управления клавишами курсора). Я так понимаю нужно поставить фокус на дерево, а как и где ?
PM MAIL   Вверх
voov
Дата 6.2.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Цитата(EvgenyTS @  6.2.2009,  09:49 Найти цитируемый пост)
нужно поставить фокус на дерево

сделай дереву SetFocus()
PM MAIL   Вверх
Earnest
Дата 9.2.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если дерево (или приложение не в фокусе), делать его принудительно в фокусе нехорошо. Показывать итем как фокусный (искуственно) - тоже нехорошо, да и зачем? Текущий итем будет выделен (серым) и этого должно быть достаточно.


--------------------
...
PM   Вверх
voov
Дата 9.2.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Earnest, я так понял, что ему нужно бегать по дереву клавишами курсора и именно для этого он хочет дать дереву фокус

Цитата(EvgenyTS @  6.2.2009,  09:49 Найти цитируемый пост)
я не имею к ниму доступа(для управления клавишами курсора)


PM MAIL   Вверх
Earnest
Дата 9.2.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Может быть... но почему тогда фокус убегает?
Представь себе приложение, в котором фокус, куда бы ты ни пытался перейти, с упорством идиота возвращается на некое дерево...


--------------------
...
PM   Вверх
voov
Дата 9.2.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Цитата(Earnest @  9.2.2009,  16:13 Найти цитируемый пост)
но почему тогда фокус убегает?

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


 




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


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

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