2010-12-20 4 views
0

ich mit Visual Studio 2008 (Windows 7) entwickeln und verwendetMFC CFileDialog funktioniert nicht ordnungsgemäß in Windows 2000

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

Der wichtige Parameter die dritten (lastPath) in einem bestimmten Verzeichnis zu erhalten! Alles funktioniert gut mit Windows 7, aber in Windows 2000 funktioniert der Dialog nur, wenn lastPath (LPCTSTR lpszFileName) leer ist (sonst öffnet sich das Dialogfeld nicht)

Irgendwelche Ideen !?

Dank und begrüßt Leon22

Antwort

0

Ok, habe ich den Fehler gefunden:

Sie das Startverzeichnis mit lpszFileName nicht gesetzt!

Rechts Nutzung:

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

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

} 

Wie ich gedebuggt kann CFolderPickerDialog in win7/win10 finden arbeiten, kann aber nur wählen Sie die Datei wie CFileDialog. Oben zeigt meine Problemumgehung, ich lasse Benutzer eine Datei auswählen endet mit szFilter und CString :: Left verwenden, um den richtigen Ordner zu erhalten.

Verwandte Themen