2008. 10. 3. 20:54

FileDialog 사용의 주의점


 예제

 CString FileName;
 CString S_Directory;
 char CurrentPath[ MAX_PATHS ];

 S_Directory = Standard_Path + fm_Directory;

 

 // 파일 다이얼로그 오픈시에 현재 경로가 바뀌는 문제를 위한 이전의 경로를 저장
 GetCurrentDirectory( MAX_PATHS, CurrentPath );

 

 CFileDialog pDlg( TRUE, "*.*(*.*)", (char*)(LPCSTR)S_Directory, OFN_HIDEREADONLY|OFN_FILEMUSTEXIST, "모든 파일", NULL );


 if( pDlg.DoModal() == IDOK )
 {
  FileName = pDlg.GetPathName();
  fm_edit->SetWindowText( FileName );
 }

 

 // 이전의 경로로 복귀
 SetCurrentDirectory( CurrentPath );

 

 return 0;

 

 들여쓰기가 개판이지만...ㅎㅎㅎ

 

파일 다이얼로그 사용시 현재의 경로가 IDOK메시지 호출...즉 해당 파일에 대한 선택을 했을 때 

그 해당 폴더로 경로가 바뀐다..그러므로 이후에 프로그램상에서 해당 원래 경로에서 해주던 명령어들이나. 

여러 루틴들이 안되는 문제가 발생하였다. 

 

가장 간단한  해결방안으로는 API함수를 쓸 수 있겠다..

SetCUrrentDirectory함수로 현재의 원래 경로를 저장해 두고 

파일다이얼로그 가 종료뒤 다시 SetCurrentDirectory함수로 원래경로로 세팅하면 

간단하게 해결된다.