본문 바로가기

Visual C++/CFileDialog example

CFileDialog in MFC example

파일열기 대화상자(CFileDialog) 사용법

테스트환경: VC++ 2012


여러개의 서로 다른 파일 타입을 열기위해 필터를 설정하는 경우에는 NULL 문자(\0)를 사용해야 하고 필터 문자열의 가장 마지막에는 2개의 NULL문자를 사용해야 한다. 한개의 필터 문자열은 NULL문자로 구분되는데, 앞 문자열은 디스플레이 되는 문자열이고 뒷 문자열은 파일의 확장자이다. 한개의 디스플레이에 2개 이상의 확장자를 등록하는 경우에는 세미콜른(;)으로 구분하면 된다. 확장자를 나타낼 때는 와일드카드(*)도 사용할 수 있다. 한개의 필터 문자열과 이어지는 다른 필터 문자열의 구분도 동일한 NULL 문자 한개를 사용하며 필터 문자열의 가장 마지막에는 NULL문자 2개를 사용한다는 것을 주의해야 한다.


void SearchFormView::OnBnClickedDcmOpen() { 

 // TODO: Add your control notification handler code here 


 CFileDialog fOpenDlg(TRUE);


fOpenDlg.m_ofn.lpstrFilter= _T("DICOM Files (*.DCM)\0*.dcm;*.DCM\0All Files (*.*)\0*.*\0\0"); 

fOpenDlg.m_pOFN->lpstrTitle = _T("Open DICOM File");

fOpenDlg.m_pOFN->lpstrDefExt = _T("dcm");

        fOpenDlg.m_ofn.lpstrInitialDir = _T("C:\\XPACS\\XPACS Viewer 0.95");


if(fOpenDlg.DoModal()==IDOK)

{

CString selectedFile = fOpenDlg.GetPathName();

CEdit* pEditPath = (CEdit*)GetDlgItem(IDC_EDIT2);

pEditPath->SetWindowTextW(selectedFile);

//AfxMessageBox(selectedFile);

dcmWnd = new ImageWnd(selectedFile, NULL);

dcmWnd->ShowWindow(SW_SHOWNORMAL);

}

}