GetOpenFileName Dialog
-
Ich hab en Problem mit dem erstellen eines GetOpenFileName Dialogs.
ofn.lStructSize = sizeof (OPENFILENAME) ; ofn.hwndOwner = hwnd ; ofn.hInstance = NULL ; ofn.lpstrFilter = TEXT("Alle Dateien (*.*)\0*.*\0\0"); ofn.lpstrCustomFilter = NULL ; ofn.nMaxCustFilter = 0 ; ofn.nFilterIndex = 0 ; ofn.lpstrFile = szFilepath; // Wenn ich hier NULL eintrage funktioniert es ofn.nMaxFile = MAX_PATH ; ofn.lpstrFileTitle = szFilename; ofn.nMaxFileTitle = MAX_PATH ; ofn.lpstrInitialDir = NULL ; ofn.lpstrTitle = NULL ; ofn.Flags = 0 ; ofn.nFileOffset = 0 ; ofn.nFileExtension = 0 ; ofn.lpstrDefExt = TEXT ("txt") ; ofn.lCustData = 0L ; ofn.lpfnHook = NULL ; ofn.lpTemplateName = NULL ;im prinzip funktioniert es, nur leider brauch ich .lpstrFile um an den Path ranzukommen. Ich kanns mir einfach nicht erklären...
//edit mit funktionieren mein ich, dass der Dialog erscheint.
mfg tobZel
-
dann solltest du vielleicht zeigen wie du szFilepath deklariert hast
-
TCHAR szFilename[MAX_PATH]; TCHAR szFilepath[MAX_PATH];sind beide gleich. Und das szFilename wird perfekt ausgefüllt aber eben nur wenn ich NULL angebe wo szFilepath hingehört.
mfg tobZel
-
Ich weiss jetzt auch net genau was bei deinem falsch ist aber ich machs immer so:
boolean Create_Dialog_Files_Open(HWND Parent, char *InitDir, char *DefFile, char *filterExtension){ OPENFILENAME ofn; int ok; memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = Parent; ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.lpstrTitle = NULL; ofn.lpstrInitialDir = InitDir; ofn.lpstrFile = DefFile; // ofn.lpstrFilter = "Textdatei (*.txt)\0*.txt\0Alle Dateien (*.*)\0*.*\0\0"; ofn.lpstrFilter = filterExtension; ofn.Flags = OFN_FILEMUSTEXIST; ok = GetOpenFileName(&ofn); return ok; }
-
bool Create_Dialog_Files_Open(HWND Parent, TCHAR *DefFile, TCHAR *filterExtension){ OPENFILENAME ofn; int ok; memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = Parent; ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.lpstrTitle = NULL; ofn.lpstrInitialDir = NULL; ofn.lpstrFile = DefFile; ofn.lpstrFilter = filterExtension; ofn.Flags = OFN_FILEMUSTEXIST; ok = GetOpenFileName(&ofn); return ok; }Wenn ich die funktion so aufrufe kommt der dialog:
Create_Dialog_Files_Open(hwnd, NULL, TEXT("Alle Dateien (*.*)\0*.*\0\0"));so nicht:
Create_Dialog_Files_Open(hwnd, szFilepath, TEXT("Alle Dateien (*.*)\0*.*\0\0"));wenn der dialog nicht kommt ist ok=0
Wenn ich die Datei nicht als unicode kompiliere kommt in keinen fällen der Dialog.
Ich weiß echt nicht mehr weiter

mfg tobZel
-
szFilepath[0] = TEXT('\0');steht doch auch so in der Doku:
[quote]Pointer to a buffer that contains a file name used to initialize the File Name edit control. The first character of this buffer must be NULL if initialization is not necessary.[/quote]
-

funkt wunderbar thxmfg tobZel