Есть главный диалог IDD_LUNARMISSIONORBITS, которому соответствует класс CLunarMissionOrbits. На этой диалоге есть кнопка, при нажатии на которую появляется модальный диалог IDD_FLIGHTTOMOONDIALOG, которому соответствует класс CFlightToMoonDlg:
void CLunarMissionOrbits::OnBnClickedMfcbutton1()
{
CFlightToMooonDlg flightToMoonDlg(NULL);
flightToMoonDlg.DoModal();
}
На диалоге CFlightToMoonDlg есть сборник вкладок m_IDC_TAB1. На одной из этих вкладок, указатель на которую называется pOrbitDetermination, также есть сборник вкладок m_IDC_TAB2. Этот сборник вкладок включает в себя вкладки pPage3 и pPage4. (Так задумана программа).
И на вкладке pPage3 при нажатии на одну из кнопок происходит запись информации в файл:
TCHAR Buffer[MAX_PATH*4];
BOOL dwRet = GetCurrentDirectory(MAX_PATH*4,Buffer);
CFileDialog fileDialog(FALSE,0,L"\\Bin\\Orbit\\measures.IZM");
fileDialog.m_ofn.lpstrInitialDir = Buffer;
fdret = fileDialog.DoModal();
if (fdret==IDOK)
{
CString fileName = fileDIalog.GetPathNAme();
CString fileNameBrief = fileDialog.GetFileName();
n = fileNasme.GetLength();
LPCTSTR pzFileName = fileName.GetBuffer();
for (i=0; i<n; i++) sfilename[i] = pzFileName[i];
sfilename[n] = '\0';
LPCTSTR pzFileNameBrief = fileNameBrief.GetBuffer();
for (i=0; i<n; i++) sfilenamebrief[i] = pzFileNameBrief[i];
sfilenamebrief[n] = '\0';
fileName.ReleaseBuffer(0);
fileNameBrief.ReleaseBuffer(0);
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile((LPCWSTR)sfilename,&FindFileData);
if (hFind!=INVALID_HANDLE_VALUE)
{
DeleteFile(LPCWSTR)sfilename);
}
// действия по сохранению содержимого в файле;
}
В случае, когда на вкладке pPage3 сохраняется файл с новым именем, то сохранение происходит успешно. В случае же, когда сохраняется файл под уже существующим именем файла, то почему-то не выводится сообщение о том, что этот файл уже существует (с опцией перезаписать этот файл или отказаться от перезаписи) и программа приостанавливается.
Как решить эту проблему--то есть как сделать так, чтобы при сохранении информации в файле с уже существующим именем выбрасывалось это сообщение?
1613 г. = 2024 г.
Здравствуйте, RussianFellow, Вы писали:
RF>Есть главный диалог IDD_LUNARMISSIONORBITS, которому соответствует класс CLunarMissionOrbits. На этой диалоге есть кнопка, при нажатии на которую появляется модальный диалог IDD_FLIGHTTOMOONDIALOG, которому соответствует класс CFlightToMoonDlg:
RF>RF>void CLunarMissionOrbits::OnBnClickedMfcbutton1()
RF>{
RF> CFlightToMooonDlg flightToMoonDlg(NULL);
RF> flightToMoonDlg.DoModal();
RF>}
RF>
RF>На диалоге CFlightToMoonDlg есть сборник вкладок m_IDC_TAB1. На одной из этих вкладок, указатель на которую называется pOrbitDetermination, также есть сборник вкладок m_IDC_TAB2. Этот сборник вкладок включает в себя вкладки pPage3 и pPage4. (Так задумана программа).
RF>И на вкладке pPage3 при нажатии на одну из кнопок происходит запись информации в файл:
RF>[ccode]
RF>TCHAR Buffer[MAX_PATH*4];
RF>BOOL dwRet = GetCurrentDirectory(MAX_PATH*4,Buffer);
RF>CFileDialog fileDialog(FALSE,0,L"\\Bin\\Orbit\\measures.IZM");
RF>В случае, когда на вкладке pPage3 сохраняется файл с новым именем, то сохранение происходит успешно. В случае же, когда сохраняется файл под уже существующим именем файла, то почему-то не выводится сообщение о том, что этот файл уже существует (с опцией перезаписать этот файл или отказаться от перезаписи) и программа приостанавливается.
RF>Как решить эту проблему--то есть как сделать так, чтобы при сохранении информации в файле с уже существующим именем выбрасывалось это сообщение?
В конструкторе CFileDialog четвертый параметр должен быть (OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT)