簡體   English   中英

(CFileDialog) 有沒有辦法在不關閉對話框的情況下從不同的文件夾中獲取多個文件 select?

[英](CFileDialog) Is there any way to select multiple files from separate folders, without closing dialog?

我試圖利用 CFileDialog 的參數 OFN_ALLOWMULTISELECT 之一來允許用戶通過 ctrl+click 訪問 select 多個文件路徑。 但是,它並沒有實現我的目標,即在不再次打開和關閉對話框的情況下也從其他文件夾中進行選擇。 我在 inte.net 上搜索了一些解決方案,但似乎 OFN_ALLOWMULTISELECT 就是這樣工作的。

下面的代碼可以正常工作,但僅適用於在同一文件夾中進行選擇:

CFileDialog fileDialog( TRUE, NULL, NULL,
        /*OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER |*/ OFN_ALLOWMULTISELECT,
        NULL, this);
if (fileDialog.DoModal() == IDOK)
{
    //Multi-selection
    CString strPaths;

    CComPtr<IFileOpenDialog> piod = fileDialog.GetIFileOpenDialog();
    ASSERT( piod );

    CComPtr<IShellItemArray> pResults;
    if( SUCCEEDED( piod->GetResults( &pResults ) ) )
    {
        DWORD count = 0; pResults->GetCount( &count );
        for( DWORD i = 0; i < count; ++i )
        {
            CComPtr<IShellItem> pItem;
            if( SUCCEEDED( pResults->GetItemAt( i, &pItem ) ) )
            {
                CComHeapPtr<wchar_t> pPath;
                if( SUCCEEDED( pItem->GetDisplayName( SIGDN_FILESYSPATH, &pPath ) ) )
                {
                    if( !strPaths.IsEmpty() )
                        strPaths += L"\n";
                    strPaths += pPath;
                }
            }
        }
    }

    m_strAddedFilePaths = strPaths;
    //UpdateData(FALSE);
}

【圖解說明】:

比如我這里select兩個文件。 在此處輸入圖像描述

當我導航到另一個文件夾和 select 一個新文件時,之前的選擇將會消失在此處輸入圖像描述

所以問題是如何保留我以前的選擇?

這被認為是這個 class 中的限制還是有辦法做到這一點?

您可以按此處所述自定義CFileDialogMFC 通過添加一個列表控件來擴展 CFileDialog ,您可以在其中從不同的文件夾中收集所有選定的文件。 您也可以在那里添加“是否已修改?”、“新添加”等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM