Мне нужно перетащить&Перетащите элемент из одного TreeList в другой ThreeList, но найдите только учебники, чтобы сделать это в том же TreeList. Может ли кто-нибудь помочь с этим? Также мне интересно, как перетащить файл или папку из файловой системы (проводник окон) в TreeList? Я использую MFC C ++. Спасибо!
Не опуская обязательного реальный ответ на все вопросы MFC (который является «Не используйте MFC — если только в 1997 году вы не живете»), OLE drag & Падение поможет вам достичь обеих целей.
Хотя сейчас у меня нет под рукой MSVC, этот пример кажется довольно подробным … с перемещением, копированием и прокруткой:
http://www.ucancode.net/CPP_Library_Control_Tool/OLE-DRAG-DROP-TREE-Control-CTreeCtrl-VC-Article.htm
Вы можете использовать это в качестве основы. Но затем для добавления в Windows Explorer добавьте дополнительную проверку в свой OnDragEnter()
а также OnDragOver()
методы, чтобы увидеть, если CF_HDROP
данные доступны:
if (pDataObject->IsDataAvailable(CF_HDROP)) {
/* Extract the DROPFILES data out of the pDataObject */
}
В этой статье рассматриваются детали того, как получить список имен файлов из этого дурацкого DROPFILES
OLE структура:
http://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra
Для контраста, если вы хотите увидеть что-то, что НЕ ужасно разработано, посмотрите на Qt Drag & Падение образцов:
Других решений пока нет …