2016-11-23 5 views
1

Ich benutze GetOpenFileName, um Dateien in C++ zu öffnen, ist es möglich, das ursprüngliche Verzeichnis an "Computer" virtuellen Speicherort mit lpstrInitialDir zu setzen?GetOpenFileName im Standardverzeichnis 'Computer' geöffnet?

Danke, Lee.

+0

Haben Sie es versucht? Wenn nicht: Warum nicht? –

+1

Wenn Sie in Windows 7 das aktuelle Verzeichnis in geöffneten oder gespeicherten Dialogfeldern und lpstrInitialDir geändert haben, ist es genauso wie das erste lpstrInitialDir, das vom Programm beim ersten Aufruf von Open oder Save-Dialogen verwendet wird, dann das letzte "aktuelle Verzeichnis" anstelle dessen in lpstrInitialDir angegeben https://msdn.microsoft.com/it-it/library/windows/desktop/ms646839(v=vs.85).aspx –

+0

Ich habe versucht "Computer", der nicht funktioniert, wie es ist ungültig. – user3725395

Antwort

3

Dies ist mit GetOpenFileName nicht möglich, da der Speicherort, den Sie verwenden möchten, nicht Teil des Dateisystems ist. Es ist vielmehr Teil des erweiterten Shell-Namensraums.

Wenn Sie sich die Dokumentation für GetOpenFileName ansehen, werden Sie feststellen, dass sie von den Common Item Dialogen (vor mehr als 10 Jahren) abgelöst wurde. In diesen Dialogen können Sie den ursprünglichen Ordner als Shell-Element angeben.

1

Wenn Sie ältere Windows-Versionen als Vista unterstützen müssen, wobei IFileDialog nicht verfügbar ist, versuchen Sie, eine Shell-Ordner-GUID anzugeben. Zum Beispiel ist die GUID 20D04FE0-3AEA-1069-A2D8-08002B30309D. Sie können es wie folgt angeben:

ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; 

Allerdings ist es erwähnenswert, dass diese Methode fast zum Scheitern verurteilt ist auf Windows 7 und später zum Scheitern verurteilt, wegen behavioral changes

Also, sind Sie besser dran mit IFileDialog auf Vista und später stattdessen.

Verwandte Themen