반응형

CFileDialog 클래스는 흔히 사용되는 파일열기, 폴더 열기 등 FileOpen 다이얼로그를 생성하는 클래스이다.

자세한 내용은 레퍼런스를 참고하자.(https://msdn.microsoft.com/ko-kr/library/dk77e5e7.aspx#cfiledialog__cfiledialog)


아래는 레퍼런스에 나와있는 CFileDialog 생성자이다.

CfileDialog는 객체 생성시에 추가로 인자값을 넣어주어야 한다.


explicit CFileDialog(
	BOOL bOpenFileDialog,  //TRUE : 파일 열기, FALSE : 다른 이름으로 저장 대화 상자
	LPCTSTR lpszDefExt = NULL,  //기본 파일 이름 확장자
	LPCTSTR lpszFileName = NULL,  //초기 파일 이름, 파일명 지정하는 edit컨트롤 기본 내용
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,  //대화상자 

	/*

	- OFN_EXPLOPER     윈도우 탐색기 스타일
	- OFN_ARROWMULTISELECT       파일을 한번에 여러개 선택 가능
	- OFN_CREATEPROMPT         존재하지 않는 파일명을 입력했을 경우 새로 생성하겠냐는 메시지 박스 출력
	- OFN_FILEMUSTEXIST     존재하지 않는 파일명을 입력할 수 없도록 함
	- OFN_HIDEREADONLY      읽기 전용 파일은 출력하지 않음
	- OFN_LONGNAMES          긴 파일 이름 포맷 지원
	- OFN_OVERWRITEPROMPT  존재하는 파일명을 입력했을 경우 덮어쓰겠냐는 메시지 박스 출력
	- OFN_PATHMUSTEXIST      이미 존재하는 디렉터리명만을 입력


	//2개 이상의 플래그를 이용하고자 하는 경우 '|' 기호로 구분하여 사용한다.
	*/
	LPCTSTR lpszFilter = NULL,  //확장자 필터
	CWnd* pParentWnd = NULL,
	DWORD dwSize = 0,
	BOOL bVistaStyle = TRUE);


****************** CFileDialog 클래스의 멤버 함수
CString GetPathName       선택된 파일의 절대 경로
CString GetFileName        선택된 파일의 이름과 확장자
CString GetFileExt            선택된 파일의 확장자
CString GetFileTitle           선택된 파일의 파일명
BOOL GetReadOnlyPref     읽기 전용 여부

POSITION GetStartPosition           다중 선택의 경우
CString GetNextPathName



******************CFileDialog 클래스의 인스턴스를 선언하고 DoModal 함수 호출

** 한개의 파일만 선택할 경우
char szFilter[] = "Image (*.BMP, *.GIF, *.JPG) | *.BMP;*.GIF;*.JPG | All Files(*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter);
if(IDOK == dlg.DoModal())
{
        CString strPathName = dlg.GetPathName();
}


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

char szFilter[] = "All Files(*.*) | *.* ||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, szFiilter);

if(IDOK == dlg.DoModal())
      for(POSITION pos=dlg.GetStartPosition(); pos != NULL;)
               m_ctrlListBox.AddString(dlg.GetNextPathName(pos));



Get으로 멤버함수를 찾으면 될듯 하다..

+ Recent posts