Frage

Unsere App ermöglicht es, mehrere Dateien werden in einem Dateiauswahldialog ausgewählt, die über die GetOpenFileName Funktion angezeigt wird (diese Frage gilt auch für Leute mit CFileDialog, etc ...)

Es erscheint eine Begrenzung für die Anzahl der Zeichen zu sein, die in den Dateinamen Feld eingegeben werden kann. (259 scheint die magische Zahl zu sein - nicht sicher, warum)

Wir haben versucht, die Änderung der folgenden Mitglieder des OPENFILE Struktur:

LpstrFile - Punkt zu unseren eigenen Puffer bei 4 K Bytes Größe nMaxFile - auf die Größe LpstrFile (wir ANSI kompilieren, so ist dies effektiv 4000

Aber diese Werte scheinen nicht die Eingangsbreite des Dateinamenfeldes im Dialog zu erhöhen.

Ich werde mit dem Senden einer EM_SETLIMITTEXT Nachricht an das Steuerelement experimentieren, aber wollte wissen, ob jemand eine Lösung hat.

EDIT - gelöst diese selbst: Lösung ich kann meine eigene Antwort nicht akzeptieren, aber hier ist es für die Nachwelt. Wenn jemand anderes eine bessere Lösung hat, bitte posten -. Oder fühlen Sie sich frei, meine Lösung so zukünftige Forscher wird es finden an der Spitze mod up

War es hilfreich?

Lösung

Es stellte sich heraus, dass die Bearbeitungssteuer (zumindest in meiner Entwicklungsumgebung) ist ein Kombinationsfeld, so EM_SETLIMITTEXT ist nicht angemessen.

Stattdessen aufgespürt ich das Kombinationsfeld auf der übergeordneten der Datei öffnen Dialog mit GetDlgCtrl (Ich tue dies in der OnInitDialog Handler), warf es CComboBox*, dann LimitText() rufen Sie die Grenze zu setzen.

Dies ist auch durch das Senden einer CB_LIMITTEXT Nachricht an das Steuerelement für die von Ihnen getan werden könnte, die nicht mit CFileDialog arbeiten. Der entsprechende Wert hier ist wahrscheinlich der OPENFIILENAME.nMaxFile Wert, der in übergeben wird.

Andere Tipps

eine Datei oder ein Verzeichnis auf MSDN Naming:

  

In dem Windows-API (mit einigen Ausnahmen in den folgenden Abschnitten beschrieben), die maximale Länge für einen Pfad MAX_PATH ist, die als 260 Zeichen definiert ist.

Auch wenn Sie längere Strings aus dem Dialog zwingen könnte, die Sie in die Bredouille führen kann bei der Verwendung von APIs, die gegen MAX_PATH codiert wurden.

Die Dokumente gehen zu sagen:

  

Der Windows-API verfügt über viele Funktionen   dass auch Unicode-Versionen   ermöglichen eine erweiterte Länge Pfad für eine   maximale Gesamtpfadlänge 32.767   Figuren. Diese Art des Pfades ist   bestehend aus getrennten Komponenten durch   Schrägstriche, die jeweils bis zu dem Wert   in der zurück   lpMaximumComponentLength Parameter   die GetVolumeInformation Funktion. Zu   geben eine erweiterte Länge Pfad verwenden   der "\\?\" Präfix. Zum Beispiel,   "\\?\D:\<very long path>". (Das   Zeichen < > verwendet werden, hier für   visuelle Klarheit und Teil eines kann nicht sein,   gültige Pfad-String.)

Ich glaube, das eine harte Grenze ist, die nicht umgangen werden können. Das einzige Mal, es sollte Angelegenheit ist, wenn Sie mehr als eine Datei auswählen möchten, da der Grenzwert für die maximale Länge des Dateinamens genug ist.

Ich habe ein „Alle Dateien“, um diese Dialoge hinzugefügt, um alle Dateien in einem Ordner zu öffnen; das ist die einzige Abhilfe, die ich gefunden habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top