2010-12-20 72 views
0

我與Visual Studio 2008開發(Windows 7)中正常工作,並使用MFC的CFileDialog不要在Windows 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 

招呼leon22

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; 
    } 

} 

正如我調試,CFolderPickerDialog能找到工作,在Win7/win10,但只能選擇文件一樣的CFileDialog。 上面顯示了我的解決方法,我讓用戶選擇一個文件以szFilter結尾,並使用CString :: Left獲取正確的文件夾。