Thing is, somehow, a drop target is not registered for the shell's ListView if FWF_DESKTOP is set.
So first, implement IDropTarget in a class. Then you should find the underlying ListView and call RegisterDrapDrop using the ListView's HWND and an instance of your class.
It's also nice to look here, another guy's been trying similar things:
http://us.generation-nt.com/answer/implementing-ishellbrowser-host-ishellview-problem-drag-drop-help-26889992.html#r
---
Improvement (I finally got it :))
----
You don't need to implement IDropTarget, 'cause the IShellView you get from CreateViewObject already implements it, it's just not registered for some reason. So all you have to do is get it:
...
IShellView* view;
...
...
HWND listViewWnd;
...
...
IDropTarget* dt;
HRESULT hr = view->QueryInterface(IID_IDropTarget, (void**)&dt);
if(SUCCEEDED(hr))
{
RevokeDragDrop(listViewWnd);
RegisterDragDrop(listViewWnd, dt);
}
...