drag&drop, как в IE
От: Arg  
Дата: 09.04.02 07:52
Оценка:
Народ, помогите, плиз. Может быть, кто-нибудь знает, как сделать в CTreeCtrl drag&drop в стиле IE? Мне нужно, чтобы при движении мыши не только выделялся текущий элемент дерева, но и рисовались линии в промежуточной позиции между элементами. Проблема в том, как сделать эти линии (зная текущий элемент и позицию курсора).
Re: drag&drop, как в IE
От: SKYNET  
Дата: 13.05.03 10:13
Оценка:
Здравствуйте, Arg, Вы писали:

Arg>Народ, помогите, плиз. Может быть, кто-нибудь знает, как сделать в CTreeCtrl drag&drop в стиле IE? Мне нужно, чтобы при движении мыши не только выделялся текущий элемент дерева, но и рисовались линии в промежуточной позиции между элементами. Проблема в том, как сделать эти линии (зная текущий элемент и позицию курсора).


Меня тоже очень интересует этот вопрос, если ты уже нашёл решение, то поделись пожалуйста.
Re: drag&drop, как в IE
От: Patalog Россия  
Дата: 13.05.03 10:55
Оценка:
Здравствуйте, Arg, Вы писали:

[]

Несколько непонятно, какие линии ты имеешь в виду.
Если имеется в виду TVS_HASLINES то при чем tyt drag'n'drop?
Или ты о TVS_TRACKSELECT? Но и тут сабж вроде ни при чем...
А если ты под эти подразумеваеш значки перетаскиваемых элементов, то смотри методы класса CImageList типа DragEnter etc.

Короче, опиши проблему подробнее, что ли...
Почетный кавалер ордена Совка.
Re[2]: drag&drop, как в IE
От: SKYNET  
Дата: 13.05.03 13:52
Оценка:
Здравствуйте, 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
Re[3]: drag&drop, как в IE
От: Patalog Россия  
Дата: 14.05.03 07:50
Оценка:
Здравствуйте, SKYNET, Вы писали:

[]

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 со товарищи.

ЗЫ А вообще, накохер все эти фенечки?
Почетный кавалер ордена Совка.
Re: drag&drop, как в IE
От: night  
Дата: 22.10.03 14:00
Оценка:
Здравствуйте, Arg, Вы писали:

Arg>Народ, помогите, плиз. Может быть, кто-нибудь знает, как сделать в CTreeCtrl drag&drop в стиле IE? Мне нужно, чтобы при движении мыши не только выделялся текущий элемент дерева, но и рисовались линии в промежуточной позиции между элементами. Проблема в том, как сделать эти линии (зная текущий элемент и позицию курсора).


лазил по MSDN'у, наткнулся на решение, вспомнил что был такой вопрос, так вот, для этого у CTreeCtrl есть специальные методы Get/SetInsertMark
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.