Drag from app

Тема в разделе "WASM.WIN32", создана пользователем punxer, 25 апр 2009.

  1. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Есть приложение, у него есть 'виртуальная файловая система'. Мне нужно с помощью драга из приложения скопировать из моего приложения файл в папку соответствующую драгу. DoDragDrop начинает перемещать и прерывает выполнение при регулярных файлах. я не хочу тормозов при перетаскивании. Задача: начать копировать файлы после того как отпустили мышу, т.е. после вызова DoDragDrop и в нужную папку...
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Не совсем понятно откуда копировать.
    Что такое "папка соответствующая драгу" ?
     
  3. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Поясню. Есть лист вью. Там отображаются файлы и папки, например, телефона. Но как такового доступа к телефону нет. Есть библиотека, которая позволяет копировать файлы и получать их список, что и отображается в лист вью. Мне нужно перетащить элемент из лист вью на какую нить папку winб, и если она может принять файл, то только после этого начать ачинхронную операцию чтения файла из устройства и запись на жоский диск. Если начать её до подтверждени я операции перетаскивания, то , очевидно что то)))
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Это тоже непонятно.

    А дроп так и работает - операция начинается только после отпускания мыши над приемником.
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Поясню ещё раз. Копирование файлов производит DoDragDrop. Но на момент драга я еще не слил их с устройства и не имею их на жоском диске. Получается надо сливать их как раз в процессе перетаскивания до вызова додрагдроп, что плоховато на нём сказывается...
     
  6. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Как получить папку, в которую я перетащил? (Путь к ней)
     
  7. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Нахер DoDragDrop, от куда эти дельфийские хрени... Пиши все сам!!!

    Ловишь сообщение WM_CREATE, создаешь LIST_VIEW и потом ставишь ему свойство драга и суб класс:

    Код (Text):
    1.       invoke  SetWindowLong,[hlist_view],GWL_WNDPROC, ListProc
    2.       mov     [OldWndProc],eax        
    3.       invoke   DragAcceptFiles,[hlist_view],TRUE
    Затем дело происходит в субклассовой процедуре:
    Код (Text):
    1. proc ListProc,hWin,uMsg,wParam,lParam
    2.          mov eax,[uMsg]
    3.          cmp eax,WM_DROPFILES
    4.           je .DROPFILE
    5.         invoke CallWindowProc,[OldWndProc],[hWin],eax,[wParam],[lParam]
    6.         ret
    7.  
    8.         .DROPFILE:
    9.              ; Вот тут что хочешь, то и лови, кидай и перебрасывай
    10.              jmp     .finish
    11.  
    12.     .finish:
    13.         xor eax,eax
    14.         ret
    15. endp
     
  8. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    [add] читай про DragAcceptFiles, DragFinish, DragQueryFile, DragQueryPoint и WM_DROPFILES
     
  9. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    dgs
    Мне нужно перетащить элемент листвью в эксплорер а не наоборот...Функции походят на обратные...
    Спс, почитаемс про них.
     
  10. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    dgs
    DoDragDrop - это более низкоуровневая функция из Ole32.dll, чем перечисленные тобой из shell32.dll. А дельфи тут вообще никаким боком.

    А это вобще причем? Ему же не ловить надо...

    В общем слышал звон...
     
  11. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Я не внимательно прочитав решил, что человек не может себе в приложение перетащить файлики, но за тем он отписался в следующем сообщение и я понял свою не внимательность...

    хм... Благодарю, не знал надо будет почитать...