c++ - 将 Zip 文件夹中的文件拖放到我的窗口中

标签 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
    }

    ...
}

我从 QueryGetData() 返回 S_FALSE。

有谁知道我错过了什么吗?

最佳答案

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

关于c++ - 将 Zip 文件夹中的文件拖放到我的窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990019/

相关文章:

c++ - 如何判断我的进程是否是从 Windows 自动运行键启动的?

python - 在 tornado.web 中提供一个 zip 文件

创建大型 .zip 文件时 PHP 中止

icons - 在 Windows 资源管理器中显示 exe 的图标时,Windows 如何决定要显示的图标格式?

android - 运行 OpenCV 混合处理教程时出现 UnsatisfiedLinkError

python - 使用 Paramiko 解压 - Python

c++ - QT 应用程序不能在 Windows 资源管理器上运行?

c++ - 占位符可以与 ref() 一起使用吗

c++ - Linux C++ 编译器(和链接器)如何决定将类型信息放在哪里?

c++ - STL iota 包含文件更改