在MFC的CFileDialog类中,OnShareViolation不是一个受保护的方法。相反,它是一个虚函数,可以在派生类中进行重写。该函数在文件共享冲突时调用,允许你自定义处理逻辑。

以下是一个简单的示例,演示如何在派生类中重写OnShareViolation:
class CMyFileDialog : public CFileDialog
{
public:
    CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL)
        : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
    {}

protected:
    virtual BOOL OnShareViolation(LPCTSTR lpszPathName)
    {
        // 在这里添加你的自定义处理逻辑
        // 例如:MessageBox(_T("文件共享冲突!"), _T("警告"), MB_OK);

        // 返回 TRUE 表示继续操作,返回 FALSE 表示取消操作
        return TRUE;
    }
};

在这个例子中,CMyFileDialog 是 CFileDialog 的子类,我们重写了 OnShareViolation 函数,可以在这个函数中添加你自己的处理逻辑。在处理完成后,你可以返回 TRUE 继续操作,或者返回 FALSE 取消操作。

请记住,这只是一个示例,你可以根据你的具体需求修改和扩展这个代码。


转载请注明出处:http://www.zyzy.cn/article/detail/17764/MFC/CFileDialog