Okno dialogowe zapisu i odczytu plików
widget
Kidyś nie mogłem rozwiązać pewnego problemu.
Otóż, po wywołaniu okna dialogowego zapisu/odczytu plików (GetOpenFileName, GetSaveFileName) zmienia się ścieżka do aktualnie uruchomionego programu (o czym nie miałem pojęcia ;). Ścieżkę tę można pobrać funkcją: GetCurrentDirectory();
Więc, aby uniknąć zmiany ścieżki do programu należy przed uruchomieniem okna dialogowego do zapisu/odczytu plików zapisać do jakiejś zmiennej aktualną ścieżkę do programu, a następnie przypisać ją na nowo:
char ProgramPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH, ProgramPath);
//wywołanie okna dialogowego do zapisu/odczytu pliku
SetCurrentDirectory(ProgramPath);
Ehm, mastahy... RTFM!
OFN_NOCHANGEDIR
Restores the current directory to its original value if the user changed the directory while searching for files.
Ale to tylko w borlandzie, a w czystym WINAMPI albo w MFC nie zadziala.
Po co takie kombinacje alpejskie?!
W każdym momencie można se pobrać ścieżkę do programu tak:
A jak ktoś chce ją wyświetlić, to jeszcze można ją upiększyć:
Marooned: jesli komus sie nie chce zmieniac calego kodu (szukac wszystkich operacji na plikach) choc i tak powinno sie stosowac Application->ExeName to mozna SetCurrentDirectory(Application->ExeName);
ParamStr(0) działa tak samo - w rzeczywistości Application->ExeName zwraca właśnie wartość ParamStr(0)