Openfilename
-
Ich möchte sobald ich einen Button drücke, dass sich ein File Browser öffnet. Dazu habe ich folgenden Code gefunden:
OPENFILENAME ofn; char szFile[260]; // buffer for filename // owner window HANDLE hf; ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = IDD_KODIERUNG_DIALOG; 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; if (GetOpenFileName(&ofn)==TRUE) hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
Nun habe ich das Problem, dass ich nicht weiß was ich unter ofn.hwndOwner eingeben muß. Eigentlich muß dort doch der Handle vom aktuellen Fenster rein oder? Kann mir da vielleicht jemand weiterhelfen?
Danke!
-
Jo, mit einem Zeiger auf's parent müsste das gehen. Versuch's doch einfach mal mit "this"
-
Was ist wenn ich m_hWnd benutze? Ist das korrekt oder falsch?
-
Wenn du in einer CWnd abgeleiteten Klasse bist... geht das auch...
ABER: Wir sind hier in MFC... da wird sowas nicht so gemacht!
HANDLE hFile = NULL; const char szFilters[] = "Textdatei (*.txt)|*.txt|Alle Dateien (*.*)|*.*||"; CFileDialog dlgFile(TRUE, "txt", "*.txt", OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, szFilters, this); if (dlgFile.DoModal() == IDOK) ::CreateFile(dlgFile.GetFileName(), GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL); if (!hFile) return false;
So in etwa ist es besser
Referenzen:
CFileDialog Class
CFileDialog::DoModal
-
Ok! SUPER Vielen Dank! Es geht