2016-11-23 11 views
1

私はGetOpenFileNameを使ってC++でファイルを開くのですが、lpstrInitialDirで "Computer"仮想位置に初期ディレクトリを設定することは可能ですか?GetOpenFileNameはデフォルトディレクトリ 'Computer'で開きますか?

ありがとう、 Lee。

+0

試しましたか?そうでない場合:どうしてですか? –

+1

Windows 7では、開いているダイアログボックスや保存ダイアログボックスやlpstrInitialDirでカレントディレクトリを変更した場合は、最初に開くダイアログや保存ダイアログを呼び出すときにプログラムで使用された最初のlpstrInitialDirと同様に使用されますlpstrInitialDirで指定されているものの代わりにhttps://msdn.microsoft.com/it-it/library/windows/desktop/ms646839(v=vs.85).aspx –

+0

私はそれが動作しない "コンピュータ"を試した有効ではありません。 – user3725395

答えて

3

GetOpenFileNameでは、使用する場所がファイルシステムの一部ではないため、これはできません。むしろ、より広いシェル名前空間の一部です。

GetOpenFileNameのドキュメントを見ると、Common Item Dialogsに(10年以上前に)置き換えられていることがわかります。これらのダイアログでは、初期フォルダをシェル項目として指定できます。

1

Vistaより古いレガシーWindowsをサポートする必要がある場合は、IFileDialogが利用できない場合は、シェルフォルダGUIDを指定してみてください。たとえば、 GUIDは20D04FE0-3AEA-1069-A2D8-08002B30309Dです。あなたはこのようにそれを指定することができます。

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

しかし、それはこの方法は、ほぼによりだから、behavioral changes

に、後でWindows 7で失敗し、する運命にあることは注目に値する、あなたは上のIFileDialogを使用してオフに優れていますVistaとその代わりに。

関連する問題