Initial Diractory eines CFileDialogs



  • GetCurrentDirectory
    SetCurrentDirectory

    ist das was du brauchst.
    Vor dem Beispieldir GET und danach wieder mit SET zurücksetzen.



  • Danke für die schnelle Antwort.

    Aber mit

    TheBigW schrieb:

    m_ldFile.m_ofn.lpstrInitialDir = "c:\";

    starte ich doch immer gleichen Verzeichnis, oder?
    Hätte schon gerne, dass der Opendialog sich den letzten Pfad merkt, aber der andere Dialog da nicht reinfunkt..

    Unix-Tom schrieb:

    GetCurrentDirectory
    SetCurrentDirectory

    ..hatte ich schon probiert. Jedenfalls mit:

    bla = _getcwd();
    .
    .
    ::SetCurrentDirectory(bla);
    

    oder so ähnlich..
    Würd GetCurrentDirectory mein Problem lösen?
    Kann's jetzt nicht testen. Bin zuhause und der Code auf'e Arbeit..:)

    Meld mich nächste Woche, ob's klappt..



  • Wenn es dein Problem nicht lösen würde, hätte ich es nicht gepostet.



  • SCD/GCD funtioniert zwar, kann dir aber andere Sachen durcheinanderbringen.

    Für ofn.lpstrInitialDir mußt Du Dir von der ausgewählten Datei natürlich den entsprechden Pfad merken.

    ( bequemerweise mittels CPath 🕶 )



  • Hi,
    also GetCurrentDirectory() macht nix anderes als _getcwd(). Ändert also leider nichts..

    peterchen schrieb:

    Für ofn.lpstrInitialDir mußt Du Dir von der ausgewählten Datei natürlich den entsprechden Pfad merken.

    Das ist nicht so toll.. Müsste das dann ja auch irgendwo persistent speichern.. Wie und wo merkt sich denn der Opendialog, was zuletzt geöffnet wurde? Das aktuelle Verzeichnis scheints wohl nicht zu sein.. und die MRU-Liste auch nicht, denn, wie ich bereits schrieb:
    OFN_NOCHANGEDIR|OFN_DONTADDTORECENT liefern auch nicht den gewünschten effekt..

    Es muss doch irgendwie möglich sein, dieses 'feature' ich-merk-mir-das-letzte-verzeichnis abzuschalten...? 😞



  • Hab da noch was gefunden:
    http://www.adminlife.com/247reference/msgs/13/66638.aspx

    Bin also nicht der einzige mit dem Problem.

    Aber das initial directory auf's current directory zu setzen ist auch nicht so toll, weil windows dieses Verzeichnis dann schütz. Man wundert sich dann, warum man es nicht löschen oder umbenennen kann.. Gerade deswegen hatte ich mir vor dem Öfnen des Dialogs das aktuelle Verzeichnis (was normalerweise das Verzeichnis der .exe ist) gemerkt und danach zurückgesetzt..
    Schon bevor ich mich um die Sache mit dem Beispieldialog kümmern wollte..

    Und

    FDialog.m_ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
    

    ändert auch nix daran.. Bei den Dialogen fehlen nur Buttons, wie 'Desktop' und 'Eigene Dateien'..



  • Das ist nicht so toll.. Müsste das dann ja auch irgendwo persistent speichern..

    ja. Vorzugsweise regisrty / Usersettings

    Wie und wo merkt sich denn der Opendialog, was zuletzt geöffnet wurde?

    Im Prozeß nur während das Programm läuft, also nicht persistent.



  • peterchen schrieb:

    Im Prozeß nur während das Programm läuft, also nicht persistent.

    Ne, das ist nach einem Neustart wieder an der zuletzt besuchten Stelle..
    Also merkt er sich das irgendwo. Wahrscheinlich wohl in der Registry..(?)



  • Hatte es vorher (unter XP) nur mit "Save As" ausprobiert, das bleibt nur während der Prozeß läuft. Für "Open" scheint es aber persistent zu sein.

    Wahrscheinlich wohl in der Registry..(?)

    Mit Sicherheit 🙂
    Aber das ist nicht dokumentiert, geht nur auf bestimmten Versionen, und überhaupt.

    Wie shcon oben gesagt: die sinnvolle Lösung ist, sich das selbst (in der Registry) zu merken, und über ofn.lpstrInitialDir zu setzen.



  • mh.. nagut.. *zähneknirsch*

    Danke für die Hilfe 🙂


Anmelden zum Antworten