【问题标题】:How to prevent the Overwrite Prompt while saving in custome IFileDialoge - VC++如何在客户文件对话框中保存时防止覆盖提示 - C++
【发布时间】:2013-06-09 05:16:16
【问题描述】:

当用户输入我的自定义IFileDialog 中已经存在的文件名时,我不想显示任何覆盖提示。

我已经使用 throw IFileDialog::SetOptions 方法,但它不能解决我的问题。

FOS_OVERWRITEPROMPT (0x00000002) :保存文件时,在覆盖现有同名文件之前提示。这是“保存”对话框的默认值。

是否有任何标志可以帮助我解决这个问题..?? 或者有没有其他方法可以防止保存文件时出现覆盖提示。

请帮助我。非常感谢提前..:)

【问题讨论】:

  • 不是很清楚你做了什么 -- 你打电话给IFileDialog::SetOptions(0) 重置值了吗?
  • 默认IFileDialog给出覆盖提示,即使FOS_OVERWRITEPROMPT标志没有设置..
  • 我自己没有使用过IFileDialog,但CFileDialog 与设置为dwFlagsOFN_HIDEREADONLY 一起使用
  • CFileDialog在Win7中不起作用,我的意思是CFileDialogOnInitDialog()方法在Win7中没有调用,所以我使用IFileDialogIFileDialog里有flag吗???
  • documentation for CFileDialog 说在 Windows Vista(或更高版本)下不支持 OnInitDialog 继承函数 -- 你在 OnInitDialog() 中做了什么特别的事情吗?

标签: windows visual-c++ mfc save-dialog


【解决方案1】:
    HRESULT hr;
    DWORD dwFlags = 0;

//pDlg is your IFileSaveDialog
    hr = pDlg->GetOptions ( &dwFlags );
    if( dwFlags & FOS_OVERWRITEPROMPT )
    {
        dwFlags = dwFlags & ( ~FOS_OVERWRITEPROMPT);
        hr = pDlg->SetOptions ( dwFlags );
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2017-05-09
    相关资源
    最近更新 更多