본문 바로가기
C & C++/C & C++

파일 다이얼로그에서 단일 * 다중선택

by izen8 2011. 10. 25.
반응형

CString saveFileName = L"";

CString strFileName = L"";

CString strExtention = L"";

int nExtentionIndex = -1;

CFileDialog fSaveAsFile(FALSE, _T(""), NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_PATHMUSTEXIST, _T("BMP|*.bmp|PNG|*.png|JPG|*.jpg||") );

if (fSaveAsFile.DoModal() != IDOK )

{

return;

}

else

{

strFileName = fSaveAsFile.GetPathName();

strExtention = fSaveAsFile.GetFileExt();


if(strFileName == L"")

{

return;

}


if(strExtention != L"")

{

saveFileName = strFileName;

}

else

{

nExtentionIndex = fSaveAsFile.m_ofn.nFilterIndex;


if(nExtentionIndex = 1)

strExtention = L".bmp";

else if(nExtentionIndex = 2)

strExtention = L".png";

else if(nExtentionIndex = 3)

strExtention = L".jpg";


saveFileName = strFileName + strExtention;

}

}

파일 선택 필터

static TCHAR BASED_CODE szFilter[] = 
_T("Chart Files (*.xlc)|*.xlc|") _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");

예제

============================================================================

CFileDialog dlgFile(TRUE);


CString fileName;
const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;

dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlgFile.GetOFN().nMaxFile = c_cMaxFiles;

dlgFile.DoModal();
fileName.ReleaseBuffer();

============================================================================

CFileDialog::CFileDialog

explicit CFileDialog( BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0,
BOOL bVistaStyle = TRUE );

 

BOOL bOpenFileDialog
       생성하는 다이얼로그 박스 타입을 지정해 주는 매개변수
       TRUE => 파일열기 다이얼로그 박스 
       FALSE => 파일 저장 다이얼로그 박스

LPCTSTR lpszDefExt
      기본 파일 확장자명(저장할 경우 사용)
       만약 유저가 파일이름 상자 안에 확장자를 포함하지 않는 경우
       lpszDefExt의 파일 확장자명을 자동으로 지정 함
       NULL => 확장자명을 추가하지 않음

lpszFileName
       시작할 때 파일이름 상자에 나타낼 이름 지정
        NULL => 시작할 때 파일이름을 나타내지 않음

dwFlags
       하나이상의 플래그를 사용하여 사용자가 원하는 다이얼로그 박스로 조합

        많이 사용되는 플래그 
        OFN_ALLOWMULTISELECT        한번에 여러개의 파일들을 선택 가능하게 함
        OFN_CREATEPROMPT              존재하지 않는 파일명을 입력했을 경우 새로 생성하겠냐는 대화상자 표시
        OFN_EXPLOPER                       열기나 저장하기를 윈도우 탐색기 스타일로 출력
        OFN_FILEMUSTEXIST               기존에 존재하는 파일 이름만 입력할 수 있도록 함
        OFN_HIDEREADONLY                읽기전용 파일은 출력하지 않음
        OFN_LONGNAMES                   긴 파일 이름을 사용할 수 있도록 함
        OFN_OVERWRITEPROMPT        저장할려고 하는 파일명이 존재할 경우 덮어쓰겠냐는 대화 상자 표시
        OFN_PATHMUSTEXIST             오직 유효한 경로나 파일명만을 입력(아님 경고 메세지 출력)

        추가 플래그 참조 :
http://msdn.microsoft.com/ko-kr/library/ms646839(en-us,VS.85).aspx


lpszFilter
    사용할 파일들이 걸러지도록 파일명들을 연속으로 나열 함

pParentWnd
    부모나 소유자 윈도우의 파일 다이얼로그 박스의 포인터

dwSize
    OPENFILENAME 구조체의 크기


반응형

'C & C++ > C & C++' 카테고리의 다른 글

파일에서 버전 정보 얻어오기  (0) 2011.10.25
유니코드 <--> 멀티 바이트 변환  (0) 2011.10.25
여러 페이지 인쇄하기  (0) 2011.10.25
디렉토리 생성 삭제  (0) 2011.05.25
Text 파일 읽어오기  (0) 2011.05.25

댓글