Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > [WinApi] Связка TreeVew с ListView через lParam |
Автор: CynicRus 22.3.2013, 11:01 | ||||
Приветствую уважаемых форумчан. Потребовалось мне к маленькой консольной тулзе прикрутить маленький GUI. Выбор пал на чистый WinApi, благо я давно собирался это освоить. Так вот, собственно на форме имеются ListView, TreeView и кнопка. По нажатию кнопки заполняется структура. Мне необходимо засунуть в lParam TVITEM индекс, под которым этот элемент был добавлен в дерево. Код записи:
в lParam тут пишется I, вроде всё замечательно. Затем мне необходимо по даблклике на элементе TreeView добавить из структуры в listview. Соответственно, мне надо забрать из lParam индекс. Вот тут и начинаются проблемы. Пытаюсь забрать данные следующим образом:
Так вот в i после этого оказывается всё что угодно, кроме того что я туда записывал. Вот собственно и вопрос - как правильно связать TreeView с ListView? |
Автор: CynicRus 22.3.2013, 11:27 | ||
Ну а если я в lParam структуру пакую, то на выходе получаю всё равно балалайку:
|
Автор: artsb 24.3.2013, 19:10 |
А вы пишете под Windows CE? Почему я спрашиваю? Потому что http://msdn.microsoft.com/en-us/library/ms914063.aspx относится к Windows CE. Если вы пишете просто под Windows, то вам нужна http://msdn.microsoft.com/ru-RU/library/windows/desktop/bb773452%28v=vs.85%29.aspx. Скорее всего, из-за такого не соответствия и возникают "приколы". |
Автор: CynicRus 25.3.2013, 08:19 |
Во как...Спасибо, не знал. |
Автор: CynicRus 25.3.2013, 10:07 | ||||||
Тем не менее - не помогло. Я уже попробовал структуру, содержащую int для передачи индекса:
Пакую в lParam:
Пытаюсь достать:
И в idx всегда одно и тоже значение 0x215. |
Автор: artsb 25.3.2013, 11:25 | ||
iIndex = 55. Что я не так сделал? |
Автор: CynicRus 25.3.2013, 11:42 | ||||
Вы получаете и отдаёте индекс в рамках одной функции. Попробуйте в одной функции число записать а из другой его прочитать. Мне ведь необходимо в этот парам записывать индекс внутреннего дерева, чтобы затем по клике на TreeView выдать в ListView нужную ветвь. Хахахахахахаха, странно - но заработало. после 3 дней мозгового штурма! Хахахаха! Спасибо! |
Автор: HANDLE 9.4.2013, 14:15 |
Не мешало бы проверить что возвращает TreeView_GetItem(), может ошибка. И в маске item.mask = TVIF_TEXT | TVIF_PARAM; флажок TVIF_TEXT лишний, потому что для текста нужно еще задать буфер и размер буфера в item. |
Автор: artsb 9.4.2013, 14:43 |
HANDLE, всё верно. Но так как указана длина буфера 0, то этот флаг просто проигнорируется. |