본문 바로가기

Programming/MFC

CFileDialog (file open)

출처 ─━ 소리의 세상 | 소리
원문 http://blog.naver.com/programsite/150000529735



- CFileDialog생성자 -
CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL);

 

1. bOpenFileDialog

(true일 경우 파일열기 대화상자, false일 경우 다른이름으로 저장)


2. 기본 확장자명

(bmp파일일 경우 "bmp"라고 넣어주면 됩니다.)

사용자가 파일명만 입력하고 확장자명을 입력하지 않았을경우

여기 넣어준 확장자명이 자동으로 붙게 됩니다.


3. 기본 파일명

(창이 생성되고 열렸을때 파일명 에디트 박스에 기본적으로 파일명을 적어주려면

"filename.bmp"와 같이 넣어주시면 되고 필요없으시면 NULL)


4. 각종 플래그값

(MSDN참고하세요. 잘 모르시겠으면 디폴트값을 쓰셔도 무방할겁니다)


5. 확장자 필터

특정확장명의 파일만 필터링 해줄 필요가 있을 경우

"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|All Files (*.*)|*.*||";

이런식으로 문자열을 넣어주면 됩니다.


6. 부모윈도우 객체

디폴트값(NULL)을 그대로 쓰셔도 무방합니다.


객체 생성후에는


if(객체명.DoModal() == IDOK)

{

//파일명을 입력하고 "확인"밑 "저장"버튼을 클릭한 경우에 대한 처리코드.

//객체명.GetPathName() 함수를 호출해서 사용자가 입력한 경로 + 파일명을 얻을 수

//있으며 객체명.GetFileName()함수를 호출해서 파일명만 얻어낼 수도 있습니다.

}






다이얼로그 베이스로 프로젝트를 만드셨으면 해당 액션에 대한 버튼과 같은 것이
있겠네요. 그 버튼이 눌러 졌을때 하는 행위를 다음과 같이 하면 됩니다.

void CMyPrj::OnButton(){
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Text Files (*.txt)|*.txt||" );

if (dlg.DoModal () == IDOK)
{
CString strFilePath = dlg.GetPathName();
CFile myFile;
CFileException fileException;

if ( !myFile.Open( strFilePath, CFile::modeRead, &fileException ) )
{
TRACE( "Can't open file %s, error = %u\n", strFilePath, fileException.m_cause );
}

// CFile의 멤버 함수를 이용하여 해당 문서를 읽으면 됨.
...

myFile.Close ();
}
}

MFC가 제공하는 방식으로 하실려면 위와 같이 하면 됩니다. 파일 처리하는
방식은 C-Runtime을 이용해도 되고, CArchive나 CDocument 등등 다양한
방법이 있으니 원하는 것으로 하면 됩니다



 CFile 클래스의 맴버함수인 Read()를 참고하시면 됩니다. char pBuf[1024]; myFile.Read (pBuf, 1024); CString str = pBuf; 다양한 방식이 있으니 좀더 살펴 보시길... CString의 GetBuffer(), ReleaseBuffer()등...

'Programming > MFC' 카테고리의 다른 글

CFileDialog 파일 저장하기  (1) 2006.03.09
CFileDialog::GetFileExt  (0) 2006.03.09
각종 .dll 파일 다운로드  (0) 2006.03.07
스레드 우선 순위  (0) 2006.03.07
콘솔창 함께 띄우기  (0) 2006.02.09