2009-10-26 5 views
5

In Vista habe ich einen IFileSaveDialog verwendet, um Benutzer einen "Speichern als" Ordner auswählen zu lassen. Benutzer exportieren beispielsweise einen Ordner mit Bildern und müssen einen neuen oder vorhandenen Zielordner auswählen.IFileSaveDialog - Wählen von Ordnern in Windows 7

Kurz gesagt, geht der Code wie folgt:

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

In Windows 7, die FOS_PICKFOLDERS Option erscheint nicht anerkannt worden sind (und als solche in the API markiert). Der Rückgabewert für den Aufruf SetOptions ist E_INVALIDARG. Wenn ich einen IFileOpenDialog verwende, darf ich die Ordneroption einstellen, aber der Benutzer wird mit einem Fehler bei der Auswahl eines nicht vorhandenen Ordners (trotz meiner Einstellungshinweise, die darauf hinweisen, dies nicht zu tun) gefragt.

Gibt es eine alternative Möglichkeit, das neue IFileDialog als "Ordner speichern" -Dialog zu verwenden?

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

+0

Amüsant verwendet das Windows-Team diese Flagge in einem Beispiel auf ihrem Blog im April! http://windowsteamblog.com/blogs/developers/archive/2009/04/16/light-up-with-windows-7-libraries.aspx –

+0

Und ein Kommentar von kazoubrewer sagt ihnen, dass es nicht mehr funktioniert. Ich nehme an, das wärst du dann ... –

+2

Manchmal fühlt es sich an, als ob du der einzige Entwickler bist, der eine API in der freien Wildbahn benutzt ... –

Antwort

4

Der Grund hierfür kann in der Dokumentation werden die Öffnen-Dialog präsentieren eine Auswahl von Ordnern anstatt Dateien anbietet.

Die Verwendung von FOS_PICKFOLDERS für "Speichern" sollte nie unterstützt werden, aber Vista hat es nicht erzwungen. Verwenden Sie stattdessen IFileOpenDialog und Sie können loslegen. Sie wählen einen vorhandenen Ordner aus (ohne einen zu erstellenden Ordner anzugeben), also war Open immer die richtige Wahl.

2

Ich habe um noch mit den Windows 7 Dialoge nicht gespielt, aber heruntergeladen die Windows® API Code Pack nur heute Morgen, während ich die Thumbnail Toolbar und Icon Overlay in der Anwendung, an der ich arbeite, implementiere. Es wird dich wahrscheinlich in die richtige Richtung weisen.

FOS_PICKFOLDERS: