Über GetOpenFileName

Nabi

Erfahrenes Mitglied
Hi,
ich habe ein programme eingestellt dass er immer von seiner Ordner Ließt
oder fängt mit dem Lesen von seinem Ordner an , das betrifft Funktionen wie z.b

fp=fopen( "source.txt","w");
sndPlaySound("timeout.wav",SND_ASYNC);

source & timeout befinden sich im ordner des programms
aber sobald

Code:
void openfile(){

ZeroMemory(&opn, sizeof(OPENFILENAME));



    opn.lStructSize       = sizeof(OPENFILENAME);
    opn.hwndOwner         = hWnd;
    opn.lpstrFile         = tz1;
    opn.nMaxFile          = sizeof(tz1);
    opn.lpstrFilter       = "Bitmaps (*.bmp)\0*.bmp\0";
    opn.nFilterIndex      = 1;
    opn.lpstrFileTitle    = NULL;
    opn.nMaxFileTitle     = 0;
    opn.lpstrInitialDir   = NULL;
    opn.hInstance         = hInstance;
    opn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    bfile=GetOpenFileName(&opn);

}

Die Funktion GetOpenFileName in frage kommt , wird beim nächsten Mal nicht von Programms-Ordner gelesen sondern von der gewählte Adresse im Open File Fenster , und dann das
Programm wird nicht richtig laufen.
diese Effect möchte ich beheben, welche einstellungen muss man mit der Funktion GetOpenFileName
machen damit das Laden / Lesen nicht weiter an die neue adresse eingestellt bleibt?.
Das Programm soll seine Dateien von seinem Ordner Einlesen .
Danke In Voraus.
 
Zuletzt bearbeitet:
Du übergibst einfach beim lpInitialDir-Parameter das gewünschte Startverzeichnis.

Wenn du dein eigenes Verzeichnis (also das, in dem sich dein Programm befindet) haben willst, nimmst du am besten GetModuleFilename( NULL ) und nimmst den Dateinamen raus (von hinten bis zum letzten Backslash alles löschen).
 
GetModuleFilename ist eine gute lösung Danke, damit ist die adresse geliefert wo das
programm-Ordner befindet ich muss nur noch Name des programmsordner+dateiname
hinzufügen.

ich muss mich um eine kleine probleme noch kummern

der mit GetModuleFilename gelieferte adresse ist so : "c:\name\name\..\" ich muss

so benutzen "c:\\name\\name\\" oder so "c:/name/name/"
nur in diesem format kann die adresse angewenset werden

welche str function :confused: das muss noch gefunden werden
 
Nabi hat gesagt.:
GetModuleFilename ist eine gute lösung Danke, damit ist die adresse geliefert wo das
programm-Ordner befindet ich muss nur noch Name des programmsordner+dateiname
hinzufügen.

ich muss mich um eine kleine probleme noch kummern

der mit GetModuleFilename gelieferte adresse ist so : "c:\name\name\..\" ich muss

so benutzen "c:\\name\\name\\" oder so "c:/name/name/"
nur in diesem format kann die adresse angewenset werden

welche str function :confused: das muss noch gefunden werden

Die Zeichenkette "\\" ist nur im Quelltext nötig. Sie wird im Speicher durch "\" ersetzt.
 

Neue Beiträge

Zurück