У меня в аппликухе имеется лист вьюшка в которой отображаются какие то файлы (если быть точнее то IShellBrowser)
я реализовал копирование файлов из нее в буфер обмена т.е могу вставлять их куда угодно в проводнике
а как сделать еще что бы можно было вставлять файл скопированный в проводнике в мою аппликуху
Здравствуйте andreyDM, Вы писали:
DM>У меня в аппликухе имеется лист вьюшка в которой отображаются какие то файлы (если быть точнее то IShellBrowser)
DM>я реализовал копирование файлов из нее в буфер обмена т.е могу вставлять их куда угодно в проводнике
DM>а как сделать еще что бы можно было вставлять файл скопированный в проводнике в мою аппликуху
if(OpenClipboard()) {
const UINT cf = RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT);
HGLOBAL g_dropeffect = GetClipboardData(cf);
if(g_dropeffect) {
DWORD drop_effect = *reinterpret_cast<DWORD*>(GlobalLock(g_dropeffect));
GlobalUnlock(g_dropeffect);
}
HGLOBAL g_drop = GetClipboardData(CF_HDROP);
if(g_drop) {
HDROP drop = reinterpret_cast<HDROP>(GlobalLock(g_drop));
const int file_count = DragQueryFile(drop, 0xFFFFFFFF, NULL, 0);
for (int i = 0; i < file_count; ++i) {
const int buf_size = DragQueryFile(drop, i, NULL, 0);
CString path; //Tyt можно что-нибудь полезное...
LPTSTR path_ptr = path.GetBuffer(buf_size + 1);
DragQueryFile(drop, i, path_ptr, buf_size + 1);
path.ReleaseBuffer();
}
GlobalUnlock(drop);
}
CloseClipboard();
}
ЗЫ А вообще лутше юзать IDataObject\IDropTarget