Необходимо из программы с помощью 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 при этом ведет себя правильно (отображает значок копирования файла), но при отпускании кнопки мыши выдает сообщение об ошибке копирования (ведь файл еще не создан).