DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VS2010でのCFileDialog

環境/言語:[環境(Windows7 SP1 64bit)、使用言語(VS2010 VC++)]
分類:[その他]

CFileDialogでVistaStyleをTRUEにし、初期表示フォルダをネットワーク「::{208D2C60-3AEA-1069-A2D7-08002B30309D}」とすると、表示時にネットワークフォルダが表示されます。
でも、VistaStyleをFALSEにすると、正しく表示されません。
できれば、VistaStyleをFALSEにしたまま、初期フォルダでネットワークを表示したいのですが、その方法がわかりません。
教えてください。
できないのであれば、その理由も教えてください。
よろしくお願いします。

CFileDialog dlg( FALSE, L"*.txt", NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
L"Text Files(*.txt)|*.txt|All Files(*.*)|*.*||",
NULL, 0, FALSE
);
dlg.m_ofn.lpstrInitialDir = L"::{208D2C60-3AEA-1069-A2D7-08002B30309D}";
dlg.DoModal();
  • 題名: Re[1]: VS2010でのCFileDialog
  • 著者: Azulean
  • 日時: 2014/05/31 19:00:01
  • ID: 32376
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
回答ではありませんが、コメントがつかないようなので意見を述べさせてください。

■No32373に返信(TOSHIさんの記事)
> CFileDialogでVistaStyleをTRUEにし、初期表示フォルダをネットワーク「::{208D2C60-3AEA-1069-A2D7-08002B30309D}」とすると、表示時にネットワークフォルダが表示されます。
> でも、VistaStyleをFALSEにすると、正しく表示されません。

手元の Windows 8.1 でも同様でした。

> できないのであれば、その理由も教えてください。

仮にこの挙動が Windows の仕様だとすれば、Microsoft の人にしか、その理由を答えることができません。
「理由を教えてください」と書かれても、答えを得ることは難しいでしょう。
どうしても実現を考えたい場合、無理なら無理というエビデンスを得たい場合は、Microsoft の有償サポートに聞いていただいた方が早く済むかと思われます。


なお、GetOpenFileName は Windows 7 から lpstrInitialDir を無視することがあるアルゴリズムが変更されています。
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms646839(v=vs.85).aspx

仮にネットワークフォルダーを指定する方法を見つけられたとしても、そのパスをずっと初期ディレクトリに指定していると、2 回目以降は前回使ったフォルダーが優先されてしまいます。
故に無理に頑張らない方がよいのではないか?と思いました。

(これはあくまで個人的に意見に過ぎませんので、取り入れられない場合は無視してください)

DOBON.NET | プログラミング道 | プログラミング掲示板