我想使用一个CFolderPickerDialog
实例来“另存为”。
换句话说,用户将输入一个(新)文件夹的名称,然后我可以创建它。
使用CFileDialog
基类,这可以在构造期间通过第一个输入参数完成:
BOOL bOpenFileDialog // TRUE for FileOpen, FALSE for FileSaveAs
如何为CFolderPickerDialog
实例实现相同的功能?
谢谢你。
我想使用一个CFolderPickerDialog
实例来“另存为”。
换句话说,用户将输入一个(新)文件夹的名称,然后我可以创建它。
使用CFileDialog
基类,这可以在构造期间通过第一个输入参数完成:
BOOL bOpenFileDialog // TRUE for FileOpen, FALSE for FileSaveAs
如何为CFolderPickerDialog
实例实现相同的功能?
谢谢你。
根据我的理解,您无法使用CFolderPickerDialog实现此目的。让我给你解释一下。CFolderPickerDialog的基类是CFileDialog和bOpenFileDialog
标志,它允许您在打开或保存时启动文件对话框。
由于CFolderPickerDialog是子类,因此微软必须在构造函数中提供对父级(CFileDialog)的调用。如果从那时打开dlgfile.cpp
,..\Microsoft Visual Studio 14.0\VC\atlmfc\src\mfc\
您将获得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将仅在文件打开模式下打开。