[MFC] 파일 입출력

// Document의 이벤트에서 ID_File_OPEN, ID_File_SAVE를
// 선택하여 추가한 다음, void OnOpen(CString filename)을 추가하여 입력한다.

void CSam2editDoc::OnFileOpen()
{
  // TODO: 여기에 명령 처리기 코드를 추가합니다.
  LPCTSTR lpszFilter = _T( "txt파일(*.txt)*.txt모든파일*.*" );
 
  /// 파일 공용컨트롤 대화상자 인스턴스 생성.. 첫번째 인자가 TRUE 이면 읽기 FALSE 이면 쓰기.
  CFileDialog FileDlg( TRUE, _T( "txt" ), NULL, OFN_HIDEREADONLY
    OFN_OVERWRITEPROMPT OFN_NOCHANGEDIR,
    lpszFilter, NULL );
 
  if( FileDlg.DoModal() == IDOK ) // 오픈 OK버튼을 눌럿을때..
  {
    OnOpen( FileDlg.GetFileName() ); // 별도로 만든 OnOpen 함수 호출한다.
  }
}

void CSam2editDoc::OnOpen(CString filename)
{
  TCHAR szbuffer[20];
 
  CFile m_file( filename, CFile::modeRead );
  m_file.Read( szbuffer, 20 );
 
  /* 여기에 처리할 내용 추가 */
 
  m_file.Close; // 파일을 닫고
  SetTitle( filename ); // 파일이름을 타이틀바에 달아준다.
}


void CSam2editDoc::OnFileSave()
{
  // TODO: 여기에 명령 처리기 코드를 추가합니다.
  LPCTSTR lpszFilter = _T( "txt파일(*.txt)*.txt모든파일*.*") ;
 
  /// 파일 공용컨트롤 대화상자 인스턴스 생성.. 첫번째 인자가 TRUE 이면 읽기 FALSE 이면 쓰기.
  CFileDialog FileDlg( FALSE, _T( ".txt" ), NULL, OFN_HIDEREADONLY
    OFN_OVERWRITEPROMPT, lpszFilter, NULL );
 
  if( FileDlg.DoModal() == IDOK )      // 세이브 OK버튼 눌럿을때..
  {
    OnSave( FileDlg.GetFileName())// 별도로 만든 OnSave 함수 호출한다.
  }
}

void CSam2editDoc::OnSave(CString filename)
{
  CFile m_file( filename, CFile::modeWrite CFile::modeCreate ); // 쓰기모드가 아니면 생성한다.
 
  /* 여기에 처리할 내용 추가 */
 
  m_file.Close();        // 파일을 닫고
  SetTitle( filename );    // 파일이름 타이틀 바에 달아준다.
  SetModifiedFlag( FALSE )// 갱신이 일어났는지 검사를 해제한다.
}

void CSam2editView::OnLButtonDown(UINT nFlags, CPoint point)
{
  CSam2editDoc *pDoc = GetDocument();
 
  pDoc->SetModifiedFlag(); // 갱신이 일어나는지 검사..
 
  CView::OnLButtonDown(nFlags, point);
}

/*
SetModifiedFlag()
파라메터를 안넣으면 디폴트 값으로 TRUE이며, 갱신이 일어났는지 검사를 한다.
데이터 값이 수정된 후에 저장할 것인지 묻지 않고 바로 종료된다.
문서에 갱신이 일어난 후에 저장할 것인지 확인창이 뜨게 하는 것이 좋다.
*/


 
2006/05/13 22:49 2006/05/13 22:49

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요