对CDialog的m_ofn成员增添钩子后钩子函数没有被调用,请前辈们帮忙看一下

对CDialog的m_ofn成员添加钩子后钩子函数没有被调用,请前辈们帮忙看一下
为了实现Open对话框包含预览图片功能,创建了个简单的单文档MFC工程,从CDialog类派生一个COpenFileDialog类,并在COpenFileDialog类的构造函数中对m_ofn做定制,如下:
C/C++ code

COpenFileDialog::COpenFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
    m_ofn.lpstrFilter = _T("Bitmaps (*.bmp)\0*.bmp\0 All Files (*.*)\0*.*\0\0");                            

    m_ofn.Flags |= (OFN_HIDEREADONLY |OFN_ENABLEHOOK| OFN_EXPLORER  |OFN_ENABLETEMPLATE);

    m_ofn.hInstance = AfxGetInstanceHandle();
    m_ofn.lpTemplateName = MAKEINTRESOURCE(IDC_PREVIEW);
    m_ofn.lpfnHook = OFNHookProc;
}


OFNHookProc钩子函数已实现:
C/C++ code

UINT APIENTRY OFNHookProc( HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam )
{
.....
}


对菜单中的“打开”项添加相应的消息响应函数,并且在里面实例化一个COpenFileDialog类对象,如下:
C/C++ code

void COpenFileDialogView::OnFileOpen()
{
    CBmpOpenFileDialog dlg;
    dlg.DoModal();
    // TODO: 在此添加命令处理程序代码
}



问题是在程序运行时(单击菜单中“打开”项)钩子函数并没有被调用,这是为什么?麻烦前辈指导一下,偶感激不尽。。。

------解决方案--------------------
CBmpOpenFileDialog 和 COpenFileDialog 什么关系?

C/C++ code

UINT CALLBACK OFNHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{ 
  TRACE(_T("OFNHookProc hdlg=%08XH uiMsg=%08XH wParam=%08XH lParam=%08X\n"),
    (UINT)hdlg, (UINT)uiMsg, (UINT)wParam, (UINT)lParam);
  return 0;
}

------解决方案--------------------
Windows Vista style file dialogs do not support certain members and flags of the CFileDialog. As a result, these will have no effect. 

The following is a list of the members that are not supported by Windows Vista: 

lpstrCustomFilter 

lpstrInitialDir 

lCustData 

lpfnHook 

lpTemplateName 

啥系统? 好像Vista系统不支持