CFileDialog может обнаружить себя, если файл существует, и предложить пользователю перезаписать.
explicit CFileDialog(
BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0
);
Просто передайте OFN_OVERWRITEPROMPT для флагов.
Что касается вашей проблемы, запустите в отладчике и когдаВы получите это утверждение, нажав кнопку «Повторить», чтобы увидеть, откуда возникла проблема (вам, вероятно, придется также просмотреть стек вызовов).Может быть, вы должны попробовать поместить это в цикл while:
CFileDialog FileDlg(FALSE, CString(".txt"), NULL, 0, CString(strFilter));