2010-12-20 2 views
0
내가 비주얼 스튜디오 2008 개발

(윈도우 7)에서 제대로 작동하고 특정 디렉토리에 들어갈MFC CFileDialog에는 윈도우 2000

CFileDialog(TRUE, NULL, lastPath, NULL, szFilter); 

중요한 매개 변수는 세 번째 (lastPath)를 사용하지 마십시오! Windows 7에서는 모두 정상적으로 작동하지만 Windows 2000에서는 lastPath (LPCTSTR lpszFileName)가 비어있는 경우에만 대화 상자가 작동합니다 (그렇지 않으면 대화 상자가 열리지 않습니다).

아이디어가 있습니까?

감사 leon22

답변

0

확인 인사, 나는 오류를 발견 :

가 lpszFileName와 초기 디렉토리를 설정하지 마십시오!

마우스 오른쪽 버튼 사용은 :

CFileDialog oDlg(TRUE, NULL, NULL, NULL, szFilter); 
oDlg.m_ofn.lpstrInitialDir = lastPath.GetBuffer(0); // set initial dir 

접견 내가 디버깅으로 CFolderPickerDialog는 WIN7/win10에서 찾을 작업 할 수

0
CString szFilter = _T("hdc22_rx_keys_saved"); // 这样重加载文件类型时规避了异常 
CFolderPickerDialog objFileDlg(
     szFilter,/*LPCTSTR lpszFolder = NULL,*/ 
     OFN_READONLY,/*DWORD dwFlags = 0,*/ 
     NULL,/*CWnd* pParentWnd = NULL,*/ 
     0/*DWORD dwSize = 0*/ 
     ); 
if (objFileDlg.DoModal() == IDOK) 
{ 
    CString outputPath(objFileDlg.GetPathName()); 
    //CString outputPath(objFileDlg.GetFolderPath()); 
    if(!PathIsDirectory(outputPath)) 
    { 
     //for XP which CFolderPickerDialog cannot work 
     outputPath = outputPath.Left(outputPath.ReverseFind('\\')); 
    } 
    if(!PathIsDirectoryEmpty(outputPath)){ 
     //MessageBox(_T("请选择一个空的目录")); 
     _MSG_BOX_ERR(_T("[%s]不是一个存在的空目录"), outputPath); 
     return; 
    } 

} 

을 leon22 수 있지만, 단지 CFileDialog에 같은 단지 파일 선택. 위에서 내 해결 방법을 보여줍니다. 사용자가 szFilter로 끝나는 파일을 선택하게하고 CString :: Left를 사용하여 올바른 폴더를 가져옵니다.