Problem mit "GetSaveFileName()"
-
Hallo zusammen,
ich habe ein ziemlich merkwürdiges Problem
mit der Funktion GetSaveFileName() die ich verwende
um eine "Speichern unter..."Dialog anzuzeigen.Hier ist die Funktion:
int SaveFile_Dialog(HWND hWindow) { OPENFILENAME ofn; char szFileName[MAX_PATH]="Unbenannt.mres"; char cleanfilename[MAX_PATH]=" "; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hWindow; ofn.lpstrFilter ="Resource Dateien (*.mres)\0*.mres\0"; ofn.lpstrFile = szFileName; ofn.nMaxFile = MAX_PATH; ofn.lpstrFileTitle = cleanfilename; ofn.nMaxFileTitle = MAX_PATH; ofn.lpstrDefExt = "mres"; ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; Log("Speicern unter... anzeigen!"); ///Dies wird als letztes in der Log Datei gezeigt if(GetSaveFileName(&ofn)) { Log("Erfolgreich!"); return(1); } Log("Fehlgschlagen!"); return(0); }
Jetzt habe ich das Problem das meine "Log()" funktioniert nicht mehr
funktioniert wenn die "GetSaveFileName()" Funktion erfolgreich war.
Drücke ich beim "Speichern unter..." Dialog auf "Abbrechen"so funktioniert der Logger weiterhin.Hier mal meine Log() Funktion:
int Log(char* message,...) { FILE* file = fopen("applog.txt","a+"); char buffer[256]; va_list msglist; va_start (msglist, message); vsprintf (buffer, message, msglist); va_end (msglist); fprintf(file,"%s",buffer); fclose(file); return(1); }
Vielleicht kann mir ja jemand von euch weiterhelfen!
Danke im Voraus!Bye,
Maximedit: Bitte Code-Tags benutzen!
[ Dieser Beitrag wurde am 09.12.2002 um 16:02 Uhr von cd9000 editiert. ]
-
Direkt helfen kann ich dir nicht, aber es liegt an den f.. Funktionen. Ich hab das selbe Problem mit einigen DX Funktionen zusammen - seitdem verwende ich CreateFile - würd ich dir auch empfehlen.
M.T.
-
ofn.lpstrFilter muß mit 2 \0 abgeschlossen werden ( \0\0 )
ofn.lpstrFile muß soweit ich weiß einen String enthalten der im Feld 0 ein NulZeichen hat ( char str[10]; str[0]='\0'; ), bevor man GetSaveFileName aufruft.
Vielleciht liegts ja daran[ Dieser Beitrag wurde am 08.12.2002 um 16:52 Uhr von crass editiert. ]
-
ofn.lpstrFilter muß mit 2 \0 abgeschlossen werden ( \0\0 )
Wozu? Der String muß am Ende nur doppelt genullt sein, ein Dreier ist überflüssig.
-
hab ich was von 3er gesagt? ich sagte 2 nulzeichen am ende
-
"" // eins "\0" // zwei "\0\0" // drei
Du wolltest die letzte Version, also drei.