Вот вопрос у меня к guru. Хочется мне сделать Drop файлов из моего приложения в проводник. что делую:
Входные параметры wnd — окно куда бросать, pt — координаты точки "сброса", sFiles — тестовые строки разделенные нулем типа "c:\\1.txt\x00c:\\2.txt\x00\x00".
Так вот не работает, к сожелению. Я знаю что дроп такто через COM. Но вроде бы говорят что можно и без него.
Подскажите, кто знает. Или хотябы можно ли сделать это на простом API?
Заранее спасибо!
void DropTo(HWND wnd, POINT pt, char *sFiles) {
DROPFILES dobj={ 20, { pt.x, pt.y }, 0, 1 };
int nLen=0;
while (sFiles[nLen]!=0 || sFiles[nLen+1]!=0) nLen++;
nLen+=2;
int nGblLen=sizeof(dobj) + nLen*2 + 5;
HGLOBAL hGbl=GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, nGblLen);
BYTE *sData=(BYTE *)GlobalLock(hGbl);
CopyMemory(sData, (BYTE *)&dobj, sizeof(dobj) );
char *sWStr=(char *)sData+sizeof(dobj);
DWORD i=0,j=i;
while (TRUE) {
if (sFiles[i]==0) {
MultiByteToWideChar(CP_ACP,0,(char *)(sFiles+j),-1,(LPWSTR)(sWStr+j*2),MAX_PATH);
j=i+1;
if (sFiles[j]==0) break;
}
i++;
}
GlobalUnlock(hGbl);
PostMessage(wnd,WM_DROPFILES,(WPARAM)hGbl,0);
}