Настройка сообщений об ошибках CFileDialog

Было бы хорошо, если есть способ настроить CFileDialog Сообщения об ошибках.

Например, если ввести неправильный диск в поле для редактирования имени файла, появится сообщение об ошибке, как показано ниже.

Неверный диск

Я хочу показать другую ошибку здесь. Возможно ли это без подклассов CFileDialog?

Также хорошо, если диалоговое окно возвращается вместо отображения ошибки.

Вот фрагмент кода:

CFileDialog dlgFile( TRUE, 0, 0,  OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, szFilters, 0, 0, 0 );
dlgFile.m_ofn.FlagsEx |= OFN_EX_NOPLACESBAR;
dlgFile.m_ofn.lpstrTitle= csTitle;
dlgFile.m_ofn.lpstrInitialDir = NULL;

const int nMaxFiles = 2512;
const int nBuffSize = ( ( nMaxFiles * ( MAX_PATH + 1 ) ) + 1 ) * sizeof( TCHAR );
dlgFile.GetOFN().lpstrFile = new TCHAR[ nBuffSize ];
::ZeroMemory( dlgFile.GetOFN().lpstrFile, nBuffSize );
dlgFile.GetOFN().nMaxFile = nBuffSize;
if( dlgFile.DoModal() == IDOK )
{
   ...
   ...
}

2 ответа

Решение

Если все в порядке, просто измените диалог, вы можете установить хук SetWindowsHookEx с WH_CBT.

Просто узнал, что настройка OFN_NOVALIDATE в m_ofn.Flags удаляет эту проверку и возвращается из диалогового окна без отображения этого предупреждения.

Другие вопросы по тегам