Frage

In Vista, ich habe eine IFileSaveDialog benutze Benutzer zu lassen, wählen Sie ein „Speichern unter“ Ordner. Benutzer exportieren einen Ordner mit Bildern, sagen wir, und brauchen eine neue oder bestehende Zielordner wählen.

Kurz gesagt, der Code lautet wie folgt:

IFileSaveDialog* dialog; // created
dialog->SetOptions(FOS_PICKFOLDERS);
dialog->Show(NULL);
dialog->GetResult(&shellItem)

In Windows 7 erscheint die FOS_PICKFOLDERS Option nicht anerkannt worden sind (und als solche in die API ). Der Rückgabewert auf dem SetOptions Anruf E_INVALIDARG. Wenn ich einen IFileOpenDialog verwenden, darf ich die Ordner-Option setzen, aber der Benutzer wird mit einem Fehler aufgefordert, wenn ein nicht vorhandenen Ordner wählen (trotz meiner Einstellung Flaggen was darauf hindeutet, dies nicht zu tun).

Gibt es eine andere Möglichkeit, die neue IFileDialog zu bekommen als „Speicherordner“ Dialog zu handeln?

[Um einige Kommentare Kopf ab, der SHBrowseForFolder API noch existiert, ist aber noch keine akzeptable Lösung für unsere UI Entscheidern.]

War es hilfreich?

Lösung

Der Grund hierfür kann in der Dokumentation:

FOS_PICKFOLDERS. Das Öffnen-Dialog präsentiert eine Auswahl von Ordnern anbieten, anstatt Dateien

FOS_PICKFOLDERS für „Speichern unter“ sollte nie aber Vista unterstützt werden hat es nicht erzwingen. Verwenden Sie IFileOpenDialog statt und du bist gut zu gehen. Sie sind Kommissionierung einen vorhandenen Ordner (nicht um einen Ordner zu erstellen Angabe), so offen war immer die richtige Wahl.

Andere Tipps

Ich habe nicht um den Windows 7 Dialoge spielt noch, aber heruntergeladen das Windows® API-Code-Pack heute morgen, als ich den Thumbnail Toolbar und Icon Overlay bin die Umsetzung in der Anwendung an dem ich arbeite. Es wird wahrscheinlich Sie in die richtige Richtung zeigen.

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