CFileDialog 정의
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 |
기본 확장자. | |
lpszFileName |
대화상자가 처음 출력되었을 때 "파일 이름" Edit 컨트롤에 출력될 파일명 지정 | |
dwFlags |
OFN_EXPLORER |
윈도우 탐색기 스타일로 출력 |
OFN_ARROWMULTISELECT |
파일을 한번에 여러개 선택 가능 | |
OFN_CREATEPROMPT |
존재하지 않는 파일명을 입력했을 경우 새로 생성하겠냐는 메시지 박스 출력 | |
OFN_FILEMUSTEXIST |
존재하지 않는 파일명을 입력할 수 없도록 함 | |
OFN_HIDEREADONLY |
읽기전용 파일은 출력하지 않음 | |
OFN_LONGNAMES |
긴 파일 이름 포맷 지원 | |
OFN_OVERWRITEPROMPT |
존재하는 파일명을 입력했을 경우 덮어쓰겠냐는 메시지 박스 출력 | |
OFN_PATHMUSTEXIST |
이미 존재하는 디렉터리명만을 입력 | |
lpszFilter |
대화상자에 출력될 파일들을 확장자에 의해서 걸러지도록 하기 위한 필터 지정 | |
pParentWnd |
대화상자의 부모 윈도우 지정 |
CFileDialog 클래스의 멤버 함수
CString GetPathName |
선택된 파일의 절대경로 |
CString GetFileName |
선택된 파일의 이름과 확장자 |
CString GetFileExt |
선택된 파일의 확장자 |
String GetFileTitle |
선택된 파일의 파일명 |
BOOL GetReadOnlyPref |
읽기전용 여부 |
POSITION GetStartPosition |
다중 선택의 경우 사용 |
CString GetNextPathName |
CFileDialog 클래스의 인스턴스를 선언하고 DoModal 함수 호출
- 한개의 파일만 선택할 경우
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter);
if(IDOK == dlg.DoModal())
{
CString strPathName = dlg.GetPathName();
}
- 여러개의 파일을 복수 선택할 경우
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));
※ 파일 복수 선택시 유의할 점
dlg.m_ofn.lpstrFile = buffer; //버퍼 포인터
dlg.m_ofn.nMaxFile = 4096; //버퍼 크기
이 부분을 넣어주지 않으면 파일 갯수에 제한이 생겨버립니다.