unknown
2009-11-25 14:08:18 UTC
I've implemented a NSE for browses the content of virtual folder (virtual file system) using Windows Explorer in XP platform. To provide friendly functionality for user, Drag-And-Drop function is necessary and important feature. Format CF_HDROP can't be used for drag and drop a virtual file/folder object. Format CFSTR_SHELLIDLIST is able to use in Vista and 7 because of explorer will asks ITransferxxx interface from our NSE after explorer received IDataObject which contains CFSTR_SHELLIDLIST only, and then drop operation will be done if I implement ITransferxxx. But in XP platform, seems explorer can't accept drag operation that only CFSTR_SHELLIDLIST format in IDataObject, because of we didn't found explorer asks any extra interface from our NSE after drag some item over explorer window.
According to MSDN Library suggestion, Format CFSTR_FILECONTENTS is a standard way to drag a virtual file object to explorer, after I implement this format, explorer doing drag-drop operation very well when I drag some file item, but when I drag a folder item (tymed has assigned to TYMED_ISTORAGE and pstg points to a IStorage interface in struct STGMEDIUM), but explorer only create a new directory named same name in cFileName of struct FILEDESCRIPTORW, explorer didn't call any method which IStorage exported and it didn't copy any child item that source folder object contains.
Does format CFSTR_FILECONTENTS will be worked for drag a virtual folder object to explorer ? If it is absolutely yes, how to make it work ?
The problem about implement drag-drop function in XP platform has bother me for long time, many thanks to anybody who answer my question.
Johnny
EggHeadCafe - Software Developer Portal of Choice
Get Identity Values of Multi-row insert by using OUTPUT Clause
http://www.eggheadcafe.com/tutorials/aspnet/03c8104d-7deb-425e-beb5-dd4f996da99f/get-identity-values-of-mu.aspx
According to MSDN Library suggestion, Format CFSTR_FILECONTENTS is a standard way to drag a virtual file object to explorer, after I implement this format, explorer doing drag-drop operation very well when I drag some file item, but when I drag a folder item (tymed has assigned to TYMED_ISTORAGE and pstg points to a IStorage interface in struct STGMEDIUM), but explorer only create a new directory named same name in cFileName of struct FILEDESCRIPTORW, explorer didn't call any method which IStorage exported and it didn't copy any child item that source folder object contains.
Does format CFSTR_FILECONTENTS will be worked for drag a virtual folder object to explorer ? If it is absolutely yes, how to make it work ?
The problem about implement drag-drop function in XP platform has bother me for long time, many thanks to anybody who answer my question.
Johnny
EggHeadCafe - Software Developer Portal of Choice
Get Identity Values of Multi-row insert by using OUTPUT Clause
http://www.eggheadcafe.com/tutorials/aspnet/03c8104d-7deb-425e-beb5-dd4f996da99f/get-identity-values-of-mu.aspx