CFileDialog mit AllowMultiselect
-
Benutze VC++ 6.0
Es ist ja moeglich einen Oeffnen-Dialog zu erzeugen, mit dem der Benutzer mehrere Dateien gleichzeitig laden kann. Der Code dafuer ist der folgende:
CString szFilter = "Alle Dateien (.)|.||";
CFileDialog pOpenDlg(TRUE, NULL, OFN_ALLOWMULTISELECT, szFilter, NULL);if (pOpenDlg.DoModal() == IDOK)
..
..Ungluecklicherweise ist die Anzahl der Dateien, die der Benutzer auswaehlen kann nur begrenzt. Versucht man mehr Dateien zu öffnen, ignoriert der Computer diese Aktion. Wie kann man die Zahl der Dateien beliebig erhoehen?
Danke schon im Vorraus!
-
Ich bin mir ziemlich sicher, dass diese Frage hier schon häufiger gestellt und beantwortet wurde. Ich glaube der für das char-Array vom Dateinamen reservierte Speicher entspricht nur MAX_PATH, kann also nicht gerade viele Dateinamen aufnehmen. Ich glaube mich zu erinnern, dass man dem Zeiger nur die Adresse eines größeren Speicherbereichs zuweisen muss. Ganz sicher bin ich mir jetzt auch nicht...
-
Die Grenze lag glaube ich bei 32768 Zeichen.
Wenn man mehr Dateien haben möchte dann muss man sich die Ausgewählten Dateien selber zwischenspeichern. Also den Dialog über die Callback Funktion hooken.
Ich glaube bei Codeguru o.ä. gab es da mal was.
-
CFileDialog pOpenDlg(...); const int Feldgroesse = 1000000; // sollte wohl reichen char Feld[Feldgroesse]; pOpenDlg.m_ofn.nMaxFile = Feldgroesse; pOpenDlg.m_ofn.lpstrFile = Feld; pOpenDlg.m_ofn.lpstrFile[0] = 0; if (pOpenDlg.DoModal() == IDOK) {...}
-
Ich danke euch für eure Tipps!