Народ, помогите, плиз. Может быть, кто-нибудь знает, как сделать в CTreeCtrl drag&drop в стиле IE? Мне нужно, чтобы при движении мыши не только выделялся текущий элемент дерева, но и рисовались линии в промежуточной позиции между элементами. Проблема в том, как сделать эти линии (зная текущий элемент и позицию курсора).
Здравствуйте, Arg, Вы писали:
Arg>Народ, помогите, плиз. Может быть, кто-нибудь знает, как сделать в CTreeCtrl drag&drop в стиле IE? Мне нужно, чтобы при движении мыши не только выделялся текущий элемент дерева, но и рисовались линии в промежуточной позиции между элементами. Проблема в том, как сделать эти линии (зная текущий элемент и позицию курсора).
Меня тоже очень интересует этот вопрос, если ты уже нашёл решение, то поделись пожалуйста.
Несколько непонятно, какие линии ты имеешь в виду.
Если имеется в виду TVS_HASLINES то при чем tyt drag'n'drop?
Или ты о TVS_TRACKSELECT? Но и тут сабж вроде ни при чем...
А если ты под эти подразумеваеш значки перетаскиваемых элементов, то смотри методы класса CImageList типа DragEnter etc.
Здравствуйте, Patalog, Вы писали:
P>Здравствуйте, Arg, Вы писали:
P>[]
P>Несколько непонятно, какие линии ты имеешь в виду. P>Если имеется в виду TVS_HASLINES то при чем tyt drag'n'drop? P>Или ты о TVS_TRACKSELECT? Но и тут сабж вроде ни при чем... P>А если ты под эти подразумеваеш значки перетаскиваемых элементов, то смотри методы класса CImageList типа DragEnter etc.
P>Короче, опиши проблему подробнее, что ли...
Простой пример: Избранное -> Упорядочить избранное. Если схватить итем и потащить его, скажем, вниз, то возможная новая позиция будет рисоваться ввиде горизонтальной линии, а не выделением итема под курсором. Собственно эта линия и НЕ выделение итема под курсором и интересует. Скриншот здесь, извини — лучше не получилось (Я про Скриншот) http://hdialer.narod.ru/copy.jpg
[]
SKY> Простой пример: Избранное -> Упорядочить избранное.
[лирика]
А. Все. Понял. Так бы и говорили. А то я полез открывать эксплорер и тупо пялился на дерево с папками. Даже themes в XP отключил, думаю може я чего забыл, а темы ентот "эффект" увидеть мешают...
[по существу]
А рисовать линию прямо на контексте контрола не получается? Типа
CDC* dc = my_cool_tree_control.GetDC();
//с нужным Pen по нужным координатам (GetItemRect думается подойдет)
dc.MoveTo(...)
dc.LineTo(...)
my_cool_tree_control.ReleaseDC(dc);
Или, как вариант, использовать все тот же CImageList, т.е. рисуете битмапку с линией (и чем там еще), добавляете в лист, а потом CImageList::DragEnter со товарищи.
Здравствуйте, Arg, Вы писали:
Arg>Народ, помогите, плиз. Может быть, кто-нибудь знает, как сделать в CTreeCtrl drag&drop в стиле IE? Мне нужно, чтобы при движении мыши не только выделялся текущий элемент дерева, но и рисовались линии в промежуточной позиции между элементами. Проблема в том, как сделать эти линии (зная текущий элемент и позицию курсора).
лазил по MSDN'у, наткнулся на решение, вспомнил что был такой вопрос, так вот, для этого у CTreeCtrl есть специальные методы Get/SetInsertMark