0

遇到与此相同的问题: Windows 7 上的 CoCreateInstance 问题 {基本上使用 IFileOpenDialog 有时会出现错误:“位置不可用”“C:\Windows\system32\config\systemprofile\Desktop 指的是不可用的位置”。显示此消息后,用户可以继续,但库无法正确显示内容,这很烦人。}

该代码在以用户权限运行的 MFC 应用程序中被调用,但该问题仅在至少 3 个测试系统上间歇性发生。

这是创建对话框并显示它的代码:

    IFileOpenDialog *pFileOpen = NULL;

    HRESULT hr = CoCreateInstance(__uuidof(FileOpenDialog), NULL, 
        CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFileOpen));

    if (SUCCEEDED(hr))
    {
        DWORD dwFlags = 0;

        pFileOpen->GetOptions ( &dwFlags );
        pFileOpen->SetOptions ( dwFlags | FOS_ALLOWMULTISELECT | FOS_PATHMUSTEXIST | FOS_FORCEFILESYSTEM );

        pFileOpen->SetTitle ( L"Select file for upload" );

        hr = pFileOpen->Show(this->GetSafeHwnd());

        //everything after this for retrieving files selected works fine.
4

0 回答 0