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::CFileDialogexplicit CFileDialog( BOOL bOpenFileDialog, |
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 |
댓글