你不能CFolderPickerDialog按我的理解,实现这一目标。 我给你解释一下。 CFolderPickerDialog的基类是CFileDialog和bOpenFileDialog
该标志将允许您启动文件对话框为打开或保存。
因为,CFolderPickerDialog是子类,因此微软必须在构造函数中向父类(CFileDialog)提供调用。如果您从..\Microsoft Visual Studio 14.0\VC\atlmfc\src\mfc\
开启dlgfile.cpp
,那么您将获得CFolderPickerDialog课程的源代码。
现在来点,如果你观察CFolderPickerDialog构造函数,那么你得到确切的原因,其不可能的。
////////////////////////////////////////////////////////////////////////////
// Folder Picker common dialog helper
CFolderPickerDialog::CFolderPickerDialog(LPCTSTR lpszFolder, DWORD dwFlags, CWnd* pParentWnd, DWORD dwSize, BOOL fNonFileSystemFolders) :
CFileDialog(TRUE, NULL, lpszFolder, dwFlags, NULL, pParentWnd, dwSize, TRUE)
{
m_bPickFoldersMode = TRUE;
m_bPickNonFileSysFoldersMode = fNonFileSystemFolders;
}
第一标志始终为真,指示不幸的是,CFolderPickerDialog将只在文件打开方式打开。
看起来只有打开的对话框支持文件夹选取器模式。从[MSDN](https://msdn.microsoft.com/en-us/library/windows/desktop/dn457282(v = vs.85).aspx):_'FOS_PICKFOLDERS'出现一个Open对话框,其中提供了文件夹而不是文件._ - 作为解决方法,您可以使用常规文件保存对话框,并仅使用选定文件路径的文件夹部分。 – zett42
@ zett42:是的,这正是我在阅读下面的答案后想到的。更准确地说,只需创建一个用户选择的名称的文件夹(不管它是否有扩展名)。谢谢! – goodvibration
是的,它让我想起你实际上可以使用完整的“文件”路径作为文件夹路径来创建。另一个建议 - 调用'dialog.GetIFileSaveDialog() - > SetFileNameLabel(L“&Folder:”);'适当地重命名编辑控件的标签。也许你甚至找到一种方法来隐藏文件扩展名组合框('CFileDialog :: HideControl()'也许))。 – zett42