[英](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 一個新文件時,之前的選擇將會消失
所以問題是如何保留我以前的選擇?
這被認為是這個 class 中的限制還是有辦法做到這一點?
您可以按此處所述自定義CFileDialog
: MFC 通過添加一個列表控件來擴展 CFileDialog ,您可以在其中從不同的文件夾中收集所有選定的文件。 您也可以在那里添加“是否已修改?”、“新添加”等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.