wegen GetOpenFileName geht kein fopen und ShellExecute() mehr
-
Hallo !
Wenn ich den Code unten aufrufen lasse und den Dateinamen in eine Listbox eintragen lasse gibt "fopen" immer NULL zurück und "ShellExecute()" funktioniert nicht mehr.
Kann mit vielleicht jemand helfen ?Danke
LPSTR CFilePlayer::OpenFileDlg(HWND hWnd,HWND hPlayList) { LPSTR chFailure=TEXT("Canceled"); OPENFILENAME ofn; ZeroMemory(&ofn,sizeof(OPENFILENAME)); ofn.lStructSize=sizeof(OPENFILENAME); ofn.hInstance=NULL; ofn.lpstrFilter=szFilter; ofn.lpstrCustomFilter=NULL; ofn.nMaxCustFilter=0; ofn.nFilterIndex=0; ofn.nMaxFile=MAX_PATH; ofn.nMaxFileTitle=MAX_PATH; ofn.lpstrInitialDir=NULL; ofn.lpstrTitle=NULL; ofn.nFileOffset=0; ofn.nFileExtension=0; ofn.lpstrDefExt=NULL; ofn.lCustData=0L; ofn.lpfnHook=NULL; ofn.lpTemplateName=NULL; ofn.hwndOwner=hWnd; ofn.lpstrFile=chFileName; ofn.lpstrFileTitle=NULL; ofn.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST; if(GetOpenFileName(&ofn)==TRUE) return chFileName; else return chFailure; return chFileName; }
Aufruf:
int ncount=(int)SendMessage(hPlayList,LB_GETCOUNT,0,0); LPSTR chTmp; chTmp=fileplayer->OpenFileDlg(hWnd,hPlayList); if(chTmp=="Canceled") return -1; strcpy(pltitle[ncount].chPath,(const char*)chTmp); sprintf(pltitle[ncount].chTitle,"%s",progctrl->ExtractPartOfStr(pltitle[ncount].chPath,'\\')); SendMessage(hPlayList,LB_ADDSTRING,ncount,(LPARAM)pltitle[ncount].chTitle);
-
if(chTmp=="Canceled") return -1;
Das wird so wohl nicht funktionieren -> lstrcmp
btw sehe ich in deinem Code weder ein fopen noch ein ShellExecute
-
GetOpenFileName änder das "Current Directory"
-
Häng das OFN_NOCHANGEDIR Flag noch mit an dann wird dein Arbeitsdirectory nicht gewechselt.
Der Dateiname hat den ganzen Pfad zu sich mit dabei, so das man die Datei öffnen kann.ofn.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR;