Pull to refresh

Comments 20

UFO landed and left these words here
Судя по коду (пардон переводил на лету без тестирования) он должен работать в том числе и под XE3.
По крайней мере я не вижу препятствий, ибо работа со строковыми буферами в юникодных версиях Delphi автоматом будет нивелироваться вызовом DragQueryFileW
Кстати у автора данной статьи есть и вторая часть материала: www.delphidabbler.com/articles?article=24
Она сейчас находится в процессе перевода, но в принципе все описанное в ней гарантированно должно работать под XE3.
Либо есть мой вариант реализации: rouse.drkb.ru/winapi.php#fwoledragdrop
Вот чем мне нравится Delphi — он очень логичный, примерно как чистый C. Глядя на код, можно сразу представить, во что компилятор развернёт ту или иную конструкцию.
А вот C++, особенно последних стандартов, да ещё если с бустом… там бывает очень большой WTF per minute, если загрузить полученный бинарник в отладчик и посмотреть получившийся код. Серьёзно, не отказался бы от Дельфей под ARM+Android.
Ну а младшие версии Дельфей любят за такую замечательную вещь, как скорость. Ведь правда же приятно, когда код стартует одновременно с нажатием F9, а не через полчаса, когда справка по F1 открывается мгновенно (а не как с этими онлайновыми и полуонлайновыми справочниками, пока подгрузится, да пока подрисуется...), когда перейти к идентификатору можно мгновенно (а не с задержкой), когда всплывающие подсказки всплывают в тему и сразу же, а не как в Эклипсе с кучей мусора и после 1-2 секунд тормозов…
FPC умеет компилить под ARM+Android. Ну и Lazarus по скорости работы весьма хорош. Вполне себе хорошая замена Делфи.
UFO landed and left these words here
Ыц — это я маханул, спасибо…
Странно: даже на MSDN нет никакой константы для $FFFFFFFF.
Так это-ж Delphi :)
Unsigned тип данных, поэтому в скобках я и привел DWORD(-1) — что есть аналог…
Я понимаю, просто некузяво со стороны разработчиков API не давать констант для специальных значений.
Хм, ну вообще-то они приводятся (здесь я немного повелся на Ваше утверждение и не проверил сам MSDN) :)

http://msdn.microsoft.com/en-us/library/windows/desktop/bb776408(v=vs.85).aspx

If the index value is 0xFFFFFFFF, the return value is a count of the dropped files. Note that the index variable itself returns unchanged, and therefore remains 0xFFFFFFFF.
А должно быть что-то типа DQF_GETCOUNT.
Ну я думаю это перебор :)
Так можно и псевдохэндлы для процесса и нити (-1/-2) в константы вынести.
Я думаю здесь логика проста — есть список, список ZERO_BASE, т.о. в списке не может быть элементов по отрицательному индексу.
А раз это не возможно — зачем такие сложности? :)
Так что там с разрулированием правил безопасности в последних Windows? (Пример пока нет возможности запустить)
Недавно пытался реализовать в своей программе Drag and Drop и уп]рся именно в проблемы с тем, что сообщения так и не приходят с именем дроповаемого файла.
В Windows 7 не сталкивался с проблемами при использовании такого способа — все работает.
Смотря как запускать, если собрать экзешник из примера и запустить его из под админа, то перетащить на него файлы из проводника не получиться.
Очень хочу статью об обратном переносе:
Чтобы при перетаскивании объекта из окна приложения в проводник получил управление мой код, который бы создал файл.
Кажется, это гораздо сложнее сделать.
Для Windows XP есть полностью рабочий пример: rouse.drkb.ru/winapi.php#fwoledragdrop
Для Vista и выше, в нем работает только копирование в буфер и вставка, перетаскивание не срабатывает.
По всей видимости требуется поддержка дополнительных интерфейсов, по аналогии с реализацией расширений проводника на базе IShellFolder (там требовалось поддержка IPersistFolder2 и еще какой-то, на вскидку уже не помню).
Пока что руки не дошли для добавления поддержки Vista и выше, как появиться время — обновлю пример.
Sign up to leave a comment.

Articles