CFileDialog mit voreingestelltem Verzeichnis?



  • Hallo,

    habe getreu dem Microsoft Beispiel einen Datei Öffnen Dialog mit GetOpenFileName erzeugt,
    jedoch sieht dieser genauso aus wie CFileDialog und Verhält sich auch genauso.
    Ich kann auch hiermit zwar ein Verzeichnis vorgeben, welches aber vom Dialog
    nicht übernommen wird.

    Hier mein Code:

    ZeroMemory(&ofn, sizeof(ofn));
    	ofn.lStructSize = sizeof(ofn);
    	ofn.hwndOwner = hDlg;
    	ofn.lpstrFile = szFile;
    	// Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
    	// use the contents of szFile to initialize itself.
    	ofn.lpstrFile[0] = _T('\0');
    	ofn.nMaxFile = sizeof(szFile);
    	ofn.lpstrFilter = _T("DB_IN (*.cle)\0*.cle\0");
    	ofn.nFilterIndex = 1;
    	ofn.lpstrFileTitle = NULL;
    	ofn.nMaxFileTitle = 0;
    	ofn.lpstrInitialDir = g_szAppPath;
    	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    
    	if (GetOpenFileName(&ofn)==TRUE){}
    

    Kann mir jemand helfen?



  • aistudy schrieb:

    habe getreu dem Microsoft Beispiel einen Datei Öffnen Dialog mit GetOpenFileName erzeugt,
    jedoch sieht dieser genauso aus wie CFileDialog und Verhält sich auch genauso.

    Was hast Du denn erwartet, wenn die MFC die WinAPI verwendet?

    Und Du bist sicher, dass der Pfad auch stimmt?



  • Hallo,

    ja ich bin sicher, dass der Pfad richtig sein muss.
    Ich nutze die Pfadvariable mehrmals für verschiedenen Operationen
    wie entpacken lesen schreiben und alles funktioniert.

    Der Pfad ausgelesen aus dem Debugger lautet:

    \Program Files\Checklist\

    Irgendjemand eine Idde an was es liegen könnte?

    Danke



  • Braucht CFileDilog im Pfadnamen nicht auch das Laufwerk?

    ?:\Program Files\Checklist\
    

  • Mod

    Das hatte ich auch schon geschrieben...



  • Hallo,

    das kann sein, problematisch ist jedoch, dass es soweit ich weiß
    auf dem PDA keine Laufwerksbezeichnungen gibt ^^.

    Die SD-Karte wird in ein Verzeichnis gemappt und mehrere Platten sind nicht
    möglich.

    Falls jemand weiß wie ich trotzdem das Verzeichnis vorgeben kann wäre ich sehr
    dankbar.



  • Martin hat glaube ich schon darauf hingewiesen:
    In der CE-Doku steht:

    Pointer to a string that receives the initial folder name, but not the full path name.

    Siehe auch:
    http://www.eggheadcafe.com/software/aspnet/32037509/getopenfilename-bug-on-wm.aspx

    Das verhalten war wohl *immer* so; und lpstrInitialDir wurde immer ignoriert bzw. hat nie den ganzen Pfad akzeptiert!

    Du solltest vermutlich "GetOpenFileNameEx" verwenden!!! (wenn vorhanden!)
    http://msdn.microsoft.com/en-us/library/bb431734

    Dann sollte es gehen!



  • Hallo,

    mh bei mir gehts um PPC Windows Mobile 5, aber interessant zu wissen.

    Ich werde es mal mit GetOpenFileNameEx probieren.

    Danke



  • Ab WM5 sollte es ja mit ...Ex gehen...



  • Hallo,

    tut mir leid wenn ich solangsam nerve aber es tut auch mit GetOpenFileNameEx nicht.

    Hier ist jedoch das Problem dass nicht mal der Dialog geöffnet wird.
    Habe sogar das beispiel aus der MSDN 1:1 kopiert selbst dann funktioniert es nicht.

    OPENFILENAMEEX ofn = {0};
    ofn.lStructSize     = sizeof(ofn);
    ofn.lpstrFilter     = _T("BMP Files (*.bmp)\0*.bmp\0");
    ofn.lpstrFile       = pszFileName;
    ofn.nMaxFile        = 200;
    ofn.lpstrInitialDir = _T("\\Program Files\\Checklist");
    ofn.lpstrTitle      = _T("Select a bitmap");
    ofn.ExFlags         = OFN_EXFLAG_THUMBNAILVIEW;
    if( GetOpenFileNameEx(&ofn)){}
    


  • Hallo,

    also der Dialog öffnet sich jetzt, jedoch gleiches Ergebnis wie bei
    CFileDialog und GetOpenFileName.

    Das zuweisen eines verzeichnisses klappt nicht.


Anmelden zum Antworten