728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 파일 대화 상자 무작정 실습

 

앞 전 강의 잘 읽어 보시고 오셨을거라고 생각됩니다.

이번 시간에는 본격적으로 파일 대화 상자를 만드는 방법에 대해 배우겠습니다.

사실상 앞 전 강좌의 전 개념 이해라고 보시면 됩니다.

이전 강좌 정확히 한번 쯤은 이해하는 데 도움됩니다.

읽어오셔야 합니다.

 

이해 안되시면 이전 글을 보세요.

 

http://yyman.tistory.com/515, [MFC] 윈도우 프로그래밍 기초 - 파일 대화 상자(CFileDialog)

 


1. 결과물

 

 

 

 

 

 

 

 

 

 


2. 실습

 

2-1. 레이아웃 디자인 (생략)

2-2. 버튼 이벤트 처리기로 두개 만들기 (생략)

2-3. 코드 내용

 

 

// 열기 대화상자
void CaaaDlg::OnBnClickedButton1()
{
       CString strMsg;
       TCHAR fileFilter[] = _T("하호 파일(*.haho)|*.csv|AVI영상(*.avi)|*.avi|");

       CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, fileFilter);

 

       if (dlg.DoModal() == IDOK)
       {
            strMsg.Format(_T("파일이름:%s\n파일확장자:%s\n파일타이틀:%s\n파일경로:%s"),
            dlg.GetFileName(), dlg.GetFileExt(), 
            dlg.GetFileTitle(), dlg.GetFolderPath());

            AfxMessageBox(strMsg);
       }

}

 

// 저장 대화상자
void CaaaDlg::OnBnClickedButton2()
{

       CString strMsg;
       TCHAR fileFilter[] = _T("하 파일(*.haho)|*.ha|미디어영상(*.avi)|*.avi|");
       CFileDialog dlg(FALSE, NULL, NULL, OFN_HIDEREADONLY, fileFilter);

 

       if (dlg.DoModal() == IDOK)
       {
            strMsg.Format(_T("파일이름:%s\n파일확장자:%s\n파일타이틀:%s\n파일경로:%s"),
            dlg.GetFileName(), dlg.GetFileExt(),
            dlg.GetFileTitle(), dlg.GetFolderPath());

            AfxMessageBox(strMsg);
       }

 코드

 

차이점 소개

빨간색으로 친 내용이 TRUE와 FALSE로 바뀐 것 이외에 전혀 차이 없습니다.

동작도 동일하게 합니다.

 

2-4. 읽기 기능 - 추가 (MFC 스타일)

 

읽는 기능을 직접 구현하는 방법에 대해 소개하겠습니다.

구현 방법에 앞서 큰 그림을 소개하겠습니다.

 

 

조합에는 CFile::modeRead | CFile::typeText 를 이용할 수 있습니다.

 

다음은 직접 구현입니다. 

 


void CaaaDlg::OnBnClickedButton1()
{
         CStdioFile f;
         CString tmpTxt, strTxt;

         TCHAR fileFilter[] = _T("텍스트 파일(*.txt)|*.txt|CSV(*.csv)|*.csv|");
         CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, fileFilter);

 

         if (dlg.DoModal() == IDOK)
         {
                if (f.Open(dlg.GetPathName(), CFile::modeRead | CFile::typeText))
                {
                          // 정상적으로 읽어짐.
                          while(f.ReadString(tmpTxt))
                                    strTxt += tmpTxt;

                          AfxMessageBox(strTxt);

                          f.Close(); // 파일 닫기
                }
 }

 읽기 코드

 

2-5. 저장 기능 - 추가 (MFC 스타일)

 

 

 참고자료) 기존 C++, C언어 파일 저장 스타일

 

MFC 스타일은?

 

 

 

 MFC 스타일 - 파일 처리

 

조합에는 CFile::modeCreate | CFile::ReadWrite 를 이용할 수 있습니다.

 

다음은 직접 구현입니다. 

 


3. 구현

 

 
void CaaaDlg::OnBnClickedButton2()
{

         CStdioFile file;
         CFileException ex;

 

         TCHAR fileExt[] = _T(".haho|.avi|");

         TCHAR fileFilter[] = _T("하호 파일(*.haho)|*.csv|AVI영상(*.avi)|*.avi|");

         CFileDialog dlg(FALSE, fileExt, NULL, OFN_HIDEREADONLY, fileFilter);

 

         if (dlg.DoModal() == IDOK)
         {
                  file.Open(dlg.GetPathName(), CFile::modeCreate | CFile::modeReadWrite, &ex);
                  UpdateData(TRUE);
                  file.Close();
          }

}

 저장 기능 포함 - 코드

 

 


4. 참고자료(Reference)

 

1. https://msdn.microsoft.com/ko-kr/library/6337eske.aspx , (Visual Studio 2013 - C++ MFC CFILE - 읽기와 저장(Eng)), 접속일자 2015-03-27

 

 

반응형

+ Recent posts