OPENFILENAME mit OFN_ALLOWMULTISELECT
-
Hi!
Hier mein Code:
// ... static TCHAR szFileName[MAX_PATH]; ofn.hwndOwner = hWnd; ofn.lpstrFile = szFileName; ofn.lpstrFileTitle = 0; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; if(!GetOpenFileName(&ofn)) { MessageBox(hWnd,"GetOpenFilename","Error!",MB_OK | MB_ICONSTOP); } else { SendMessage(hDataLb,LB_ADDSTRING,0,(LPARAM) szFileName); } // ...
Wenn ich bei ofn.Flags noch OFN_ALLOWMULTISELECT angebe, zeigt er mir nach dem Öffnen-Dialog die Fehlermeldung an, warum tut er das? Und wie kann ich dann alle markierten Datein zur ListBox hinzufügen???
thx & cu
-
lStructSize sollte auf jedenfall schonmal gesetzt sein!
-
Wenn ich dich richtig verstanden habe, kommt der Fehler erst nachdem GetOpenFileName() ausgeführt wurde.
Mich wundert, dass GetOpenFileName() überhaupt funktioniert, obwohl du nur so wenige Member der OPENFILENAME-Struktur ausgefüllt hast. Also wenigstens ein ZeroMemory() würde ich da mal zuerst aufrufen.
Und dann zur Listbox: Mit LB_ADDSTRING kannst du immer nur einen String auf einmal zur Listbox hinzufügen. Du musst also erstmal aus "szFileName" die ganzen Dateinamen herauslesen und dann jeden einzeln per LB_ADDSTRING an die Listbox schicken.
Soweit ich weiß steht in szFileName zuerst das Verzeichnis und dann die ganzen ausgewählten Dateinamen, jeweils durch ein NULL voneinander getrennt. Nach dem letzten Dateinamen steht dann ein doppeltes NULL. Du mußt halt den ganzen String durchgehen und nach NULL-Zeichen suchen, um an die einzelnen Dateinamen zu kommen.