As far as I can tell, the only reason for the MFC
CFileDialog
class not displaying the new Vista/W7 style dialog (with breadcrumbs, etc.) is that it uses a hook for providing the various
CFileDialog
callbacks (
CFileDialog::OnFileNameChange()
, etc.).
So, if you _don't_ customize the file open dialog, all you need do to enable the new style dialogs is to derive a class from
CFileDialog
and disable the hook, as follows:
class CMyFileDialog : public CFileDialog
{
...
int DoModal()
{
m_ofn.lpfnHook = NULL;
m_ofn.Flags &= ~OFN_ENABLEHOOK;
return CFileDialog::DoModal();
}
};
And the real gift is that when the dialog returns, you can query the results through your class exactly as if you had used
CFileDialog
directly!
Alternatively, you can simply modify the
CFileDialog
instance directly:
CFileDialog dialog(...);
dialog.m_ofn.lpfnHook = NULL;
dialog.m_ofn.Flags &= ~OFN_ENABLEHOOK;
if (dialog.DoModal() == IDOK)
{
...
}