OnSaveDocument(LPCTSTR lpszPathName) source

By | 2014년 6월 17일

CFileSave

// CSingleDoc 명령
BOOL CSingleDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
		CFile file;
        CFileException fe;
		CString temp;

		temp = _T("\"Demo Page \"\r\n");
		temp += _T("\"If you want show this page, you must save file\"\r\n");
		int length = temp.GetLength();

        if (!file.Open(lpszPathName, CFile::modeCreate |
            CFile::modeReadWrite | CFile::shareExclusive, &fe))
        {
            ReportSaveLoadException(lpszPathName, &fe,
                TRUE, AFX_IDP_INVALID_FILENAME);
            return FALSE;
        }

        // replace calls to Serialize with SaveDIB function
        BOOL bSuccess = FALSE;
        TRY
        {
            BeginWaitCursor();
            //bSuccess = ::SaveDIB(m_hDIB, file);
			file.Write(temp,length*2);
			bSuccess = TRUE;
            file.Close();
        }
        CATCH (CException, eSave)
        {
            file.Abort(); // will not throw an exception
            EndWaitCursor();
            ReportSaveLoadException(lpszPathName, eSave,
                TRUE, AFX_IDP_FAILED_TO_SAVE_DOC);
            return FALSE;
        }
        END_CATCH

            EndWaitCursor();
        SetModifiedFlag(FALSE);     // back to unmodified

        if (!bSuccess)
        {
            // may be other-style DIB (load supported but not save)
            //  or other problem in SaveDIB
            CString strMsg;
            //strMsg.LoadString(IDS_CANNOT_SAVE_DIB);
			
			strMsg = _T("저장중 에러가 발생했습니다.");
            MessageBox(NULL, strMsg, NULL, MB_ICONINFORMATION | MB_OK);
        }

        return bSuccess;
	//return CDocument::OnSaveDocument(lpszPathName);
}
Category: C++