본문 바로가기
Windows/MFC

MFC, FileDialog를 호출하는 클래스. CFileDialog

by Planetis 2015. 11. 24.

CFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWITEPROMPT, OPCTSTR lpszFilter = NULL, CWnd *pParentWnd = NULL)


 bOpenFileDialog

 TRUE - 열기, FALSE - 다른 이름으로 저장

 lpszDefExt

 기본 확장자. cpp라고 적으면 파일명이 자동으로 *.cpp 와 같이 적용 된다.

 lpszFileName

 대화상자가 처음 출력되었을 때 "파일 이름" Edit 컨트롤에 출력될 파일명 지정

 dwFlags

 OFN_EXPLOPER     윈도우 탐색기 스타일로 출력

 OFN_ARROWMULTISELECT       파일을 한번에 여러개 선택 가능

 OFN_CREATEPROMPT         존재하지 않는 파일명을 입력했을 경우 새로 생성하겠냐는 메시지 박스 출력

 OFN_FILEMUSTEXIST     존재하지 않는 파일명을 입력할 수 없도록 함

 OFN_HIDEREADONLY      읽기 전용 파일은 출력하지 않음

 OFN_LONGNAMES          긴 파일 이름 포맷 지원

 OFN_OVERWRITEPROMPT  존재하는 파일명을 입력했을 경우 덮어쓰겠냐는 메시지 박스 출력

 OFN_PATHMUSTEXIST      이미 존재하는 디렉터리명만을 입력

 lpszFilter

 대화상자에 출력될 파일들을 확장자에 의해서 걸러지도록 하기 위한 필터 지정

 pParentWnd

 대화상자의 부모 윈도우 지정


CFileDialog 클래스의 멤버 변수, 함수

CString GetPathName

 선택된 파일의 절대 경로

 CString GetFileName

 선택된 파일명과 확장자

 CString GetFileExt

 선택된 파일의 확장자

 CString GetFileTitle

 선택된 파일명

 BOOL GetReadOnlyPref

 읽기 전용 여부

 POSITION GetStartPosition

 다중 선택을 했을 경우

 CString GetNextPathName

 



CFileDialog 클래스의 사용

클래스의 인스턴스를 선언하고 DoModal 함수 호출한다.


# 한개의 파일만 선택할 경우

char fileFilter[] = "Image (*.BMP, *.GIF, *.JPG) | *.BMP;*.GIF;*.JPG | All Files(*.*)|*.*||";

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

if(IDOK == dlg.DoModal())

{

    CString pathName = dlg.GetPathName();

}


# 여러개의 파일을 복수 선택할 경우

char fileFilter[] = "All Files(*.*) | *.* ||";

CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, fileFiilter);


if(IDOK == dlg.DoModal())

    for(POSITION pos=dlg.GetStartPosition(); pos != NULL;)

        m_ListBox.AddString(dlg.GetNextPathName(pos));

320x100

댓글