将文件从 Zip 文件夹拖放到我的窗口中

ahm*_*md0 5 c++ zip windows-explorer

我正在尝试实现一项功能,可以将 Zip 存档的内容从 Windows 资源管理器的 Zip 文件夹拖放到我的窗口中。我实现了 IDropTarget 的所有必要方法,并且当我从 Windows 资源管理器中拖放常规文件时一切正常。

当我尝试从 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
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

我从 QueryGetData() 返回 S_FALSE。

有谁知道我错过了什么?

Luk*_*uke 3

我无法想象 Explorer 的 zip 文件处理程序实现 CF_HDROP,因为这需要它在启动拖动之前提取文件。我打赌它使用CFSTR_FILEDESCRIPTOR 和 CFSTR_FILECONTENTS