Как перетащить файлы и папки из приложения Win32 и зайти в проводник

я работаю в C ++ приложение Win32 и я реализую DragAndDrop операция, я могу перетащить файлы и папки из проводника в мое приложение, используя WndProc звонки с WM_DROPFILES, Сейчас я пытаюсь для DragAndDrop файлы и папки из приложения Win32 в проводнике.

Я пишу пример кода для перетаскивания текста из приложения в проводник с помощью Drag-and-Drop C Карлссона Библиотека прекрасно работает для удаления текста, но мое требование — перетаскивать файлы и папки из приложения win32 в проводник. ниже приведен пример кода для удаления текста.

case WM_LBUTTONDOWN:
{
char* text = "Hello, World! This is the drop source.";
HANDLE text_on_heap;
PMYDROPSOURCE text_drop_source;
CLIPFORMAT cf[1] = { CF_TEXT };
text_on_heap = GlobalAlloc(GMEM_FIXED, strlen(text) + 1);
if (NULL == text_on_heap) break;
strcpy((char*)text_on_heap, text);
text_drop_source = CreateMyDropSource(FALSE, cf, &text_on_heap, 1);
if (NULL != text_drop_source)
{
/* Drop source created, so begin the drag. This will block. */
MyDragDropSource(text_drop_source);
/* Drag-drop is done so destroy the drop source. */
FreeMyDropSource(text_drop_source);
}
/* Free up the buffer; drag-drop is finished. */
GlobalFree(text_on_heap);
return TRUE;
}

-2

Решение

Чтобы Explorer мог принимать перетаскиваемые файлы, все, что нам нужно сделать, — это создать некоторые данные CF_HDROP и поместить их в объект данных. Таким образом, вы должны использовать IDropSource и IDropTarget.

Итак, вам нужна структура DROPFILES. Это немного сложно создать (так как это не всегда один и тот же размер).

Чем вам нужно создать IDataSource и выполнить DoDragDrop.

Вы найдете обзор в MSDN

Вот полный пример, который показывает работу с MFC. Посмотрите в последний раздел.

Код для простой версии Win32 Вот. Он использует небольшую публичную библиотеку на SourceForge

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]