【发布时间】:2013-03-26 08:51:07
【问题描述】:
我正在使用从CFileDialog 扩展的自定义文件对话框。
问题是,OninitDialog() 不会在 DoModal() 之前被调用。
我在OninitDialog() 中自定义了CFileDialog。
我正在使用带有 Win7 操作系统的 VS 2012。
我找不到,出了什么问题。
【问题讨论】:
标签: windows visual-c++ mfc cfiledialog
我正在使用从CFileDialog 扩展的自定义文件对话框。
问题是,OninitDialog() 不会在 DoModal() 之前被调用。
我在OninitDialog() 中自定义了CFileDialog。
我正在使用带有 Win7 操作系统的 VS 2012。
我找不到,出了什么问题。
【问题讨论】:
标签: windows visual-c++ mfc cfiledialog
Microsoft documentation 表示 Windows Vista 不支持OnInitDialog。
Windows 7 也是如此(可能也适用于 Windows 8)。
【讨论】:
我今天遇到了同样的问题;我想我找到了一个有效的解决方案,在你的类的构造函数中设置 m_bVistaStyle = FALSE; 完成此操作后,我得到了 OnInitDialog,并且能够很好地自定义此对话框。
CMyOpenDlg::CMyOpenDlg(LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(TRUE, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
m_bVistaStyle = FALSE;
【讨论】:
m_bVistaStyle 不应在构造函数中设置(至少应在析构函数中恢复)。相反,在构造 CFileDialog 对象时应该将 FALSE 传递给最后一个参数bVistaStyle。