Postoje dve implementacije: jedna je starija i bazirana je na tzv. legacy clipboard-u,
dok je druga novija, bazirana na OLE/COM tehnologiji. Ova druga je znatno
komplikovanija, sto za tvoj zahtev nije potrebno.
Evo kako se implementira na bazi legacy clipboard-a:
Kljucna stvar je da override-ujes handler za poruku WM_DROPFILES koja se moze naci
u spisku Window poruka (nije u spisku poruka za Dialog). Metod se zove OnDropFiles( )
Unutar tog metoda koristis visenamensku funkciju ::DragQueryFile( ) koja u zavisnosti
od ulaznih parametara moze da ti kaze koliko fajlova je drop-ovano, koliko je dugacak
string imena fajla, i na kraju da ti vrati ime drop-ovanog fajla.
Da bi sve to radilo u Dialog-based aplikacijama, u WM_CREATE handler-u (koji se zove
OnCreate( )) treba da pozoves metod DragAcceptFiles( ) koji inicijalizuje podrsku za
drag-drop. Nisam primetio da skodi ni kad se zove u OnInitDialog( )
U SDI/MDI aplikacijama, drag/drop je po defaultu aktivan, treba ti samo OnDropFiles( )
implementacija. Masa drugih stvari je na mestu - prepoznavanje i odbacivanje
drop-ovanog shortcut-a i/ili foldera, a sto je najvaznije, u ovoj arhitekturi bez problema radi i
drop-ovanje na shortcut aplikacije.