отложенное копирование в Explorer
От: qwertyui  
Дата: 17.08.05 19:28
Оценка:
Необходимо из программы с помощью drag&drop копировать файлы в Explorer. Формирование копируемого файла может занимать очень много времени и поэтому его создание откладывается до конца операции drag&drop. Как мне определить момент завершения drag&drop (до того, как Explorer попробует считать несуществующий файл) — чтобы сформировать файл?

Код начала drag&drop:


COleDataSource * pSrc = new COleDataSource();

HGLOBAL hFiles = GlobalAlloc( GMEM_SHARE | GMEM_ZEROINIT, sizeof(DROPFILES) + MAX_PATH );
LPDROPFILES lpDropFiles = (LPDROPFILES) GlobalLock(hFiles);
lpDropFiles->pFiles = sizeof(DROPFILES);
GetCursorPos(&lpDropFiles->pt);
lpDropFiles->fNC = TRUE;
lpDropFiles->fWide = FALSE;

char * strFiles = (char*)(lpDropFiles + 1);
strcpy(strFiles, "C:\\myvirtualfile.qwe");

GlobalUnlock(hFiles);

pSrc->CacheGlobalData(CF_HDROP, hFiles);

pSrc->DoDragDrop();


Explorer при этом ведет себя правильно (отображает значок копирования файла), но при отпускании кнопки мыши выдает сообщение об ошибке копирования (ведь файл еще не создан).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.