MFC诡异有关问题,子类的函数回调函数没有被调用

MFC诡异问题,子类的函数回调函数没有被调用

class CFileDialogEx : public CFileDialog
{
DECLARE_DYNAMIC(CFileDialogEx)

public:
CFileDialogEx(BOOL bOpenFileDialog, // 对于 FileOpen 为 TRUE,对于 FileSaveAs 为 FALSE
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
virtual ~CFileDialogEx();

protected:
void OnButtonClicked(DWORD dwIDCtl);
DECLARE_MESSAGE_MAP()
};



我继承了CFileDialog,然后覆写了CFileDialog的这个虚的回调函数:


void CFileDialogEx::OnButtonClicked(DWORD dwIDCtl)
{
if(_taccess(CFileDialog::GetPathName(),0)!=-1)
if(MessageBox("该文件已经存在,是否覆盖?","警告",MB_YESNO)==IDYES)
CFileDialog::OnButtonClicked(dwIDCtl);
return;
}



在调用时,过程是这样的:


CFileDialogEx* fileDialog=new CFileDialogEx(FALSE,"*.txt",m_fileName,OFN_FILEMUSTEXIST |OFN_HIDEREADONLY,"文件类型(*.txt)|*.txt||",this);
fileDialog->DoModal();


结果单击窗体上的按钮时,发现始终跑不到void CFileDialogEx::OnButtonClicked(DWORD dwIDCtl)
上去
虚函数 回调

------解决方案--------------------
OnButtonClicked前没有virtual关键字,不是虚函数
------解决方案--------------------
只有你給的 对话框模板 上 的 按钮 才会 响应。
原来 对话框上 按钮 需要 hook 才能 响应。
------解决方案--------------------
两个对话框上的按钮吧