BOOL CKSFileDialog::DoSave(LPCTSTR lpszPathName, BOOL bReplace) { if (m_pDoc==NULL){ASSERT (FALSE);return FALSE;} CString newName = lpszPathName; if (newName.IsEmpty()) { CDocTemplate* pTemplate = m_pDoc->GetDocTemplate(); ASSERT(pTemplate != NULL); newName = m_pDoc->GetPathName(); if (bReplace && newName.IsEmpty()) { newName = m_pDoc->GetTitle(); // check for dubious filename int iBad = newName.FindOneOf(_T(" #%;/\\")); if (iBad != -1) newName.ReleaseBuffer(iBad); // append the default suffix if there is one CString strExt; if (pTemplate->GetDocString(strExt, CDocTemplate::filterExt) && !strExt.IsEmpty()) { ASSERT(strExt[0] == '.'); newName += strExt; } } if (DoPromptFileName(newName,bReplace ? AFX_IDS_SAVEFILE : AFX_IDS_SAVEFILECOPY, OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, FALSE, pTemplate)) return FALSE; // don't even attempt to save } CWaitCursor wait; if (!m_pDoc->OnSaveDocument(newName)) { if (lpszPathName == NULL) { // be sure to delete the file try { CFile::Remove(newName); } catch( CException * e) { TRACE0("Warning: failed to delete file after failed SaveAs.\n"); do { e->Delete(); } while (0); } } return FALSE; } // reset the title and change the document name if (bReplace) m_pDoc->SetPathName(newName); return TRUE; // success }
void CMyDocManager::OnFileOpen() { // prompt the user (with all document templates) CString strPathName; if (!DoPromptFileName(strPathName, AFX_IDS_OPENFILE, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, TRUE, NULL)) return; theApp.OpenDocumentFile(strPathName); }
void CDocManager::OnFileOpen() /****************************/ { CString strFileName; if( DoPromptFileName( strFileName, AFX_IDS_OPENFILE, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, TRUE, NULL ) ) { if( OpenDocumentFile( strFileName ) == NULL ) { AfxMessageBox( AFX_IDP_FAILED_TO_OPEN_DOC ); } } }