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,则不会.请问谁知道怎么回事啊?
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,则不会.请问谁知道怎么回事啊?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货