CFileDialog --- die Krux mit den Pfaden
-
@TAW: MFC 7 hat eine ähliche Path-Klasse, die ist aber nur ein kleiner wrapper, und bei weitem nicht so bequem :werbetrommer rühr:
-
ihr könnt auch sowas ähnliches machen
std::string GetMyPath() { char f[MAX_PATH]; GetModuleFileName (0, f, MAX_PATH); std::string s = f; return s.erase (s.rfind("\\")+1, s.length()); }
und dann einfach nur den dateinamen anhängen. alles relativ zur .exe hat echt vorteile. man kann z.b. das ganze verzeichnis verschieben und es funzt immer noch
-
Wir sind hier im MFC-Forum. Daher verwende doch bitte CString.
Der Quellcode ist übrigens genau der, der auch ind er FAQ zu finden ist.
-
dEUs schrieb:
Klar. Arbeitsverzeichnis = Aktuelles Verzeichnis != EXE-Verzeichnis
Man könnte dein Programm also ganz einfach austricksen, wenn man eine Verknüpfung anlegt und das Arbeitsverzeichnis auf C:\foo legt, statt auf den Pfad deiner exe...
Alternativ zu peterchens Klasse kannst du mal in die MFC-FAQ gucken, da steht auch ein Weg wie man den EXE-Pfad bekommt.Naja,
GetCommandLine() sollte da helfen, aber wie gesagt ich bin zu faul jetzt an allen Stellen den relativen Pfad umzuwandeln und sei es durch davorsetzen eines Strings, der mir von GetCommandline() geliefert wird.
peterchen schrieb:
Du kannst auch das aktuelle Verzeichnis auslesen und nacher wiederherstellen (GetCurrentDirectory, SetCurrentDirectory), aber das aktuelle Verzeichnis ist keine allzu robuste Sache - nach dem dritten "Die Hilfe geht nicht mehr" - Anruf würde micht nicht mehr drauf einlassen.
Warum ist das nicht robust, hast Du Erfahrungen damit gemacht ?
Ich habs gerade getestet, und es funzt augenscheinlich erstmal prima, und wäre damit genau das, was ich gesucht hab...Grüße und Danke Euch...
BOA
-
Arrgggh,
wenn ich den FileDialog offen habe, ist der Pfad falsch.....
Schließe ich ihn, ist er wieder korrekt, aber das kann für den ein oder anderen Thread zu spät sein, der den richtigen Pfad benötigt.....F..k, ich komm net drumherum...
Grüße
BOA
-
dEUs schrieb:
Wir sind hier im MFC-Forum. Daher verwende doch bitte CString.
Der Quellcode ist übrigens genau der, der auch ind er FAQ zu finden ist.sorry. das sollte sich ja ganz einfach auf 'CString' ummodeln lassen (von hinten alles bis zum ersten \ abschneiden). bei mfc muss man aber, glaub' ich, dann '_splitpath' dafür bemühen
-
Hm, man kann es auch mit der MFC von Hand machen, so wie du es gemacht hast.
-
dEUs schrieb:
Hm, man kann es auch mit der MFC von Hand machen, so wie du es gemacht hast.
möglich. aber ich denke man kann auch mfc und stl-zeug mischen.
-
Warum ist das nicht robust, hast Du Erfahrungen damit gemacht?
F..k
ja
Es gibt so viele Aktionen, die dein aktuelles Verzeichnis verändern können, ich hab's mir also abgewöhnt, mich überhaupt drauf zu verlassen.
Trotzdem löst das nicht alle Probleme. "Unser" derzeitiges Release hat ein Problem mit der Online-Hilfe: HTMLHelp sucht verknüpfte CHM's im aktuellen Verzeichnis...
-
Aloha peterchen,
ich konnte einfach nicht aufhören zu suchen und habe etwas gefunden, was für Dein CPath - Projekt interessant sein könnte.
_getcwd
gibt das aktuelle Arbeitsverzeichnis !!!
Das setze ich global am Anfang und verändere nur die Pfade in den Threads und fertig.Beste Grüße und Danke noch einmal
BOA