我试图在Zip存档的内容可以从Windows资源管理器的Zip文件夹拖放到我的窗口时实现该功能。我实现了IDropTarget的所有必要的方法,并且当我从Windows资源管理器拖放常规文件时,一切正常。将Zip文件夹中的文件拖放到我的窗口
问题发生在下面的方法,当我试图从一个Zip文件夹中的文件拖动:
HRESULT DragEnter(IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect)
{
static FORMATETC fmtetc_file = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
HRESULT hr = pDataObject->QueryGetData(&fmtetc_file);
if(hr == S_OK)
{
//Format supported
}
...
}
我得到S_FALSE从的QueryGetData()返回。
有没有人有任何想法我错过了什么?
非常感谢,使用下面的代码线的dragenter()工作: 'FORMATETC fmtetc_file = {的RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR) ,0,DVASPECT_CONTENT,-1,TYMED_HGLOBAL}; 如果(pDataObject->的QueryGetData(fmtetc_file)== S_OK){ } ' 但现在我有点进退两难是如何获得的通道连接到一个zip压缩文件(其文件被拖进我的窗口)或临时路径到文件本身,如果壳牌恰好为我解压缩? – ahmd0 2011-05-13 23:58:46
拖放的重点是抽象出zip文件等实现细节;如果你能弄明白的话,我会有点惊讶。 – Luke 2011-05-14 02:33:23
对不起,卢克,但我仍然无法弄清楚。那么我该如何获得拖到我窗口中的文件呢? – ahmd0 2011-05-14 08:29:16