今天在订制打开文件对话框的时候遇到一个问题,如下
CFileDialogEx继承自CFileDialog类,在类中自定义消息处理函数,当DoModal()后,如果用户单击了'确定'按钮会弹出一个断言,跟踪发现断言位置在CFileDialog.DoModal()函数的如下代码处
CFileDialog::DoModal()
{
    ...
if (nResult)
ASSERT(pThreadState->m_pAlternateWndInit == NULL);
    ...
}
如果不在CFileDialogEx中实现自已的消息函数就不会出现断言,不如是什么原因?
我的消息处理函数没做任何事情,但同样出错,代码如下.
CFileDialogEx::CFileDialogEx(...) :
CFileDialog(...)
{ m_ofn.Flags |=  OFN_ENABLEHOOK | OFN_ENABLETEMPLATE |OFN_HIDEREADONLY; 
m_ofn.lpTemplateName = "TemplateDlg";
    //去掉下面的代码去找就不会弹出断言
m_ofn.lpfnHook =  (LPOFNHOOKPROC)FileDlgProc;//钩子
}
LRESULT CALLBACK FileDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return false;
}