LRESULT CALLBACK CFileOpenDlgExCallback(HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);为内嵌CFileDialog到窗口,创建了一个新的类重载CFileDialog:
CFileOpenDlgEx::CFileOpenDlgEx(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt,
LPCTSTR lpszFileName,
DWORD dwFlags,
LPCTSTR lpszFilter,
CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog,
lpszDefExt,
lpszFileName,
dwFlags,
lpszFilter,
pParentWnd)
{
m_ofn.Flags |= (OFN_ENABLETEMPLATE|OFN_ENABLEHOOK);
m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_FILEOPEN_DIALOG);
m_ofn.lpstrTitle = "TestFopen";
m_ofn.lpfnHook = (LPOFNHOOKPROC)fOpenCallback;
m_ofn.lpstrFilter = _T("*.*\0*.*");
}LRESULT CALLBACK fOpenCallback(HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return 1;
}
窗口调用方法:
TestWindow::OnOK()
{
    CFileOpenDlgEx dlg(TRUE,NULL);
    dlg.DoModal();
}    结果发现:如果挂了fOpenCallback,选择文件后按下OK按钮会报错,但是CANCEL不会,如果不挂Hook,则不会.请问谁知道怎么回事啊?