Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.113.188] |
|
Сообщ.
#1
,
|
|
|
Есть главный диалог 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 сохраняется файл с новым именем, то сохранение происходит успешно. В случае же, когда сохраняется файл под уже существующим именем файла, то почему-то не выводится сообщение о том, что этот файл уже существует (с опцией перезаписать этот файл или отказаться от перезаписи) и программа приостанавливается. Как решить эту проблему--то есть как сделать так, чтобы при сохранении информации в файле с уже существующим именем выбрасывалось это сообщение? |
Сообщ.
#2
,
|
|
|
Цитата erslgoeirjh @ В случае, когда на вкладке pPage3 сохраняется файл с новым именем, то сохранение происходит успешно. В случае же, когда сохраняется файл под уже существующим именем файла, то почему-то не выводится сообщение о том, что этот файл уже существует.. А кто всё это должен делать ? Узнай, существует ли файл. Если он существует показывай предупреждающий диалог с выбором вариантов действий. Приблизительно так: // -------------------------------------------------------------------------- BOOL WINAPI FileExist (const TCHAR *pName) { if(!pName) return FALSE; DWORD Attrs = ::GetFileAttributes(pName); if(Attrs == INVALID_FILE_ATTRIBUTES) return FALSE; if((Attrs & FILE_ATTRIBUTE_DIRECTORY)!=0) return FALSE; return TRUE; } // -------------------------------------------------------------------------- BOOL WINAPI DirExist (const TCHAR *pName) { if(!pName) return FALSE; DWORD Attrs = ::GetFileAttributes(pName); if(Attrs == INVALID_FILE_ATTRIBUTES) return FALSE; if((Attrs & FILE_ATTRIBUTE_DIRECTORY)==0) return FALSE; return TRUE; } // -------------------------------------------------------------------------- |
Сообщ.
#3
,
|
|
|
erslgoeirjh
Лол ты серьёзно? Ты же сам перед записью удаляешь файл если он существует: WIN32_FIND_DATA FindFileData; HANDLE hFind; hFind = FindFirstFile((LPCWSTR)sfilename,&FindFileData); if (hFind!=INVALID_HANDLE_VALUE) { DeleteFile(LPCWSTR)sfilename); } // действия по сохранению содержимого в файле; Непонятно только зачем этот велосипед: - если надо затереть - открой файл в режиме перезаписи он сам перетрётся - если не надо - на существование проверяют обычно через GetFileAttributes(), а не то что ты написал |
Сообщ.
#4
,
|
|
|
Цитата cppasm @ Лол ты серьёзно? Ты же сам перед записью удаляешь файл если он существует Copy+Past |