MFC诡异有关问题,子类的函数回调函数没有被调用
MFC诡异问题,子类的函数回调函数没有被调用
我继承了CFileDialog,然后覆写了CFileDialog的这个虚的回调函数:
在调用时,过程是这样的:
结果单击窗体上的按钮时,发现始终跑不到void CFileDialogEx::OnButtonClicked(DWORD dwIDCtl)
上去
------解决方案--------------------
OnButtonClicked前没有virtual关键字,不是虚函数
------解决方案--------------------
只有你給的 对话框模板 上 的 按钮 才会 响应。
原来 对话框上 按钮 需要 hook 才能 响应。
------解决方案--------------------
两个对话框上的按钮吧
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 才能 响应。
------解决方案--------------------
两个对话框上的按钮吧