如何在使用 CFileDialog 打开文件失败时捕获异常

How to catch an exception when opening a file with CFileDialog fails

本文关键字:文件 失败 捕获异常 CFileDialog      更新时间:2023-10-16

当我要打开的一个或多个文件正在使用或被其他进程或应用程序打开时,我需要捕获异常。我正在使用 MFC 的CFileDialog's DoModal打开所选文件的列表。但是,当我在"打开文件"对话框中选择一个文件后单击"打开"时,会出现一个小的弹出对话框,指出所选文件正被另一个应用程序使用。 DoModal方法仅返回(成功或失败代码),即在"打开文件"对话框关闭后。所以我不知道在哪里插入代码来检查打开文件对话框时是否无法打开所选文件。

CFileDialog fd (TRUE, NULL, _T("*.pid"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY);
if (fd.DoModal() == IDOK)
{
    //Get selected filenames 
} 

我想在双击以选择文件或单击打开文件对话框窗口中的"打开"按钮时插入AfxMessageBox调用。

使用虚拟函数 CFileDialog::OnShareViolation。

您也可以删除OFN_SHAREAWARE并与CFileDialog::OnFileNameOK进行自己的检查