CFileDialog类确实有一个名为OnButtonClicked的受保护方法。该方法是文件对话框中按钮点击事件的处理函数。

以下是一个简单的示例,演示如何在派生自CFileDialog的类中覆盖OnButtonClicked方法:
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 void OnButtonClicked(int nButtonType)
    {
        // 在此处理按钮点击事件
        if (nButtonType == FN_SAVE)
        {
            // 用户点击了保存按钮
            // 可以在这里添加自定义处理逻辑
        }

        // 调用基类的处理函数
        CFileDialog::OnButtonClicked(nButtonType);
    }
};

在上面的示例中,OnButtonClicked方法被覆盖,并在其中处理了保存按钮的点击事件。你可以根据需要添加自己的逻辑。

请注意,OnButtonClicked方法是受保护的,因此你需要在派生类中使用。如果你使用的是不同的MFC版本,方法的参数或用法可能会有所不同,请查阅相应版本的MFC文档获取详细信息。


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