1

我想使用一个CFolderPickerDialog实例来“另存为”。

换句话说,用户将输入一个(新)文件夹的名称,然后我可以创建它。

使用CFileDialog基类,这可以在构造期间通过第一个输入参数完成:

BOOL bOpenFileDialog // TRUE for FileOpen, FALSE for FileSaveAs

如何为CFolderPickerDialog实例实现相同的功能?

谢谢你。

4

1 回答 1

2

根据我的理解,您无法使用CFolderPickerDialog实现此目的。让我给你解释一下。CFolderPickerDialog的基类是CFileDialogbOpenFileDialog标志,它允许您在打开或保存时启动文件对话框。

由于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将仅在文件打开模式下打开。

于 2017-08-17T14:44:29.317 回答