Problem mit GetOpenFileName
-
Hallo ich habe da mal eine Frage zu der Funktion "GetOpenFileName".
Und zwar soll doch normalerweise der Pointer lpstrFile von der
OPENFILENAME - Struktur auf einen String mit der ausgewählten Datei zeigen.Warum bekomme ich ihn aber nicht.
Kann mir vielleicht einer sagen was ich hier falsch mache ?CString Dateiname;
OPENFILENAME opfn;memset(&opfn,0,sizeof(OPENFILENAME);
opfn.lStructSize = sizeof(OPENFILENAME);GetOpenFileName(&opfn);
Dateiname.Insert(0,opfn.lpstrFile);
Der Pointer zeigt aber weiterhin auf NULL. Wieso???
-
Erstmal solltest du noch ein bisschen mehr von der Struktur ausfüllen (glaub ich) (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceui40/htm/cerefopenfilename.asp). Zu deinem Problem ;): Probier's mal so:
CString Dateiname; char *lpFile = new char[MAX_PATH]; OPENFILENAME opfn; memset(&opfn, 0, sizeof(OPENFILENAME); opfn.lStructSize = sizeof(OPENFILENAME); opfn.lpstrFile = (LPSTR) lpFile; GetOpenFileName(&opfn); Dateiname.Insert(0,opfn.lpstrFile);
cya
-
Nö mit deinem Tipp kam ich nicht sonderlich weiter...
Wenn ich denn lpstrFile den Pointer zuweise bekomme ich gar kein Dialog
angezeigt.
-
Hab es zwar nicht getestet, aber probier mal, ob das hier funktioniert:
OPENFILENAME ofn; char szFile[260]; ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); GetOpenFileName(&ofn);
Weitere Infos gibt es hier!
-
Leider tritt das selbe Problem auf...
Kein Dialog erscheint...
-
Dann versuch mal, ob das Beispiel aus dem SDK wenigstens funktioniert:
OPENFILENAME ofn; // common dialog box structure char szFile[260]; // buffer for file name HWND hwnd; // owner window // Initialize OPENFILENAME ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0"; ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; // Display the Open dialog box. GetOpenFileName(&ofn);
-
Bei mir funkt es über haupt nicht...
TOTALE VERZWEIFLUNG...Am besten ich vergesse diese Funktion ganz schnell...
Ne mal im ernst ist aber echt komisch das noch nicht mal das SDK Beispiel
funktioniert.
Ich will doch eigentlich nur das ich mit dieser Funktion, den gewählten Dateinamen erhalte. Klar gibt es da noch die ein oder andere Funktion für,
aber mich interessiert es trotzdem woran der Fehler hier liegt.Noch einer einen Tipp ???
-
szFile[0] = '\0';
-
Hi !
Hat geklappt.
Genau das habe ich jetzt auch mal gebraucht endlich mal ein Erfolgserlebnis.Ohhh wundersame TECHNIK...
DANKE!!!
Aber ist echt total doof beschrieben in der MSDN!!!
-
Ja, wenn es da auch so steht, wie flenders es gepostet hat, dann ist es obendrein auch noch FALSCH.