본문 바로가기

Windows/MFC

파일 열기/저장하기 CFileDialog

http://www.devpia.com
"test", "test", "test"
"EXEFILES(*.exe)","EXE FILES(*.exe)", "EXE FILES(*.exe)|*.exe|"

파일 열기/저장하기    CFileDialog
[code]
CFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFNpHIDEREADONLY | OFN_OVERWRITERPROMPT,CWnd* pParentWnd = NULL);

BOOL bOpenFileDialog
    이값이 TRUE이면 열기 다이얼로그 박스이고, FALSE이면 파일저장 다이얼로그 박스이다.

LPCTSTR lpszDefExt
    파일열기시 확장자 지정 // 저장시 자동확장자 붙음 예) “hwp"

LPCTSTR lpszFileName
    default 파일명으로 저장할 때... 예) “Noname"

DWORD dwFlags
    아래의 플래그 값을 OR(|)연산자를 이용 조합할수 있다.
    OFN_ALLOWMULTSELECT: 파일이름 리스트 박스에서 파일을 여러개 선택할수 잇도록 지정한다.
    OFN_ FILENUSTEXIST: 사용자가 이미 존재하는 파일만을 선택할수 있도록 한다.이플래그가 지정되면 OFN_PATHNUSTEXIST도 자동 지정
    OFN_HIDEREADONLY: 읽기전용파일은 출력하지 않음.
    OFN_OVERWRITERPROMPT: 기존의 파일을 덮어쓰도록 한다
    OFN_PATHMUSTEXIST: 존재하지 않는 디렉토리나 파일을 선택시 경고 메시지 박스가 나타난다.
    LPCTSTR lpszFilter = NULL - 파일 형식박스에 나타날 파일의 형태를 지정(주로 열기시 많이 사용)
    예) “실행파일(*.EXE|*.EXE|모든파일(*.*)|*.*||”파일형식 박스에 나타나는 내용은 다음과 같다.
        실행파일(*.EXE)
        모든파일(*.*)
    CWnd* pParentWnd =NULL - 대부분 널값을 준다. 다이얼로그 박스의 부모 윈도우를 지정'

[/code]


[code]
////////////////////////////////////////////////////////////////// CODE

void CdlgTotalView::OnComdOpen() // 파일 열기 다이얼로그 박스
{
    CFileDialog dlgFileOpen(TRUE, "EXE", NULL,//화일명 없음
                            OFN_ALLOWNULTISELECT | OFN_FILENUSTEXIST,
                            "EXE FILES(*.exe)|*.exe|All Files(*.*)|*.*||",NULL);

    //옵션 선택 부분.
    if(dlgFileOpen.DoModal() == IDOK)
    {
        CString str;
        POSITION pos = dlgFileOpen.GetStartPosition();//선택된 파일을 얻음.
        while(pos)
        {
            str += dlgFileOpen.GetStartPosition();//path를 돌려줌
            str += "\r\n"; //선택화일이 다수이면 수만큼 반복
        }
        MessageBox(str, "파일 열기 정보");
    }
}

void CdlgTotalView::OnComdSave() // 파일 저장하기 다이얼로그 박스
{
    CFileDialog dlgFileSave(FALSE, "EXE", NULL,//화일명 없음
                            OFN_FILENUSTEXIST,
                            "EXE FILES(*.exe)|*.exe|All Files(*.*)|*.*||",NULL);

    //옵션 선택 부분.
    if(dlgFileSave.DoModal() == IDOK)
    {
        CString str;

        str = dlgFileSave.GetFileName(0);
        MessageBox(str, "파일 저장 정보");
    }
}
[/code]