Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Перетаскивание файлов (расширенный стиль), Вопрос к кодокопателям WinAPI и специалистам по OLE/COM/ActiveX
 
В процессе разработки программы (внешне похожей на проводник Windows) встала задача реализовать перетаскивание файлов в программу и из программы в проводник. Тема довольно избитая и гуглится без проблем. Поэтому реализовать мне этот функционал не составило большого труда. Собственно саму реализацию я сделал. Все работает.

Однако есть непонятный момент. Если вы присмотритесь как реализован Drag & Drop в самом проводнике, то увидите хитрость: выделенные в каталоге (или на рабочем столе) файлы следуют за курсором. При этом иконки выделенных файлов нарисованы прозрачными. Мало того, они имеют нелинейную прозрачность: чем дальше от курсора, тем бледнее. Отсюда вопрос: как реализован этот спец. эффект ? В противоположность этому, все видели как реализован Drag & Drop в архиваторах WinRAR, 7zip. При перетаскивании на них файлов - курсор принимает стандартный вид: беспонтовый 2-цветный курсор, унаследованный еще со времен Win 3.11. Хех - у меня тоже самое :-). Т.е. совсем не то, что в explorer.exe:



Можно конечно исхитриться и в интерфейсе IDropSource реализовать создание прозрачного окна, на котором нарисовать иконы. Но, во-первых, это гемморойный путь (придется анализировать тип файлов и определять какую икону рисовать; затем мучиться с этим окном - оно ведь не должно мешать процессу D&D), а во-вторых, не оптимальный путь (так сказать, через задний проход). Наверняка есть более элегантное решение, через системные интерфейсы, типа IDataView.

Думал, что это простой вопрос. Но как показал гугл - не совсем. Решил подсмотреть у других разрабов. И тут обломился. Отсюда вывод: либо это не документировано, либо - слишком сложно.


P/S я ф шоке: такой же спец. эффект замутили и в Linux.  * !!!
буду благодарен, если кто подскажет, как это сделано в пингвине.
Изменено: Крис Дьявол - 13.08.2009 00:52:18
Страницы: 1
Читают тему