フォルダ選択ダイアログについて


hide  2004-12-22 05:41:37  No: 55770

お世話になります。
現在、次の環境にて開発を行っています。VC++.NET 2003 Windowsフォームアプリケーション(.NET)

でお聞きしたいのですが、現在、フォルダ選択ダイアログを使用しているのですが、表示されるデバイスを指定したいのですが、どうしてもうまくいきません。例えば、PCにCドライブ、Dドライブが存在した場合、フォルダ選択ダイアログに表示するドライブをCドライブ限定にしたいのです。

何か方法があれば是非教えていただきたいのですが、よろしくお願いします。

以上


瀬戸っぷ  2004-12-22 05:58:12  No: 55771

> フォルダ選択ダイアログに表示するドライブをCドライブ限定にしたいのです。

TreeViewに表示されるモノを…というコトでいいのでしょうか?
Cドライブ以下にする。というコトで。

BROWSEINFO構造体のpidlRootメンバでルートが指定できますから、
ソレを指定したいドライブのモノにしてやればよろしいかと。
とりあえず、有名どころとして「猫でも」の276章と277章辺りが参考になるかと。

http://www.kumei.ne.jp/c_lang/sdk3/sdk_276.htm
http://www.kumei.ne.jp/c_lang/sdk3/sdk_277.htm


hide  2004-12-22 19:32:01  No: 55772

どうもありがとうございます。

少し足らなかったのですが、例えば、C:、D:、E:とドライブが存在する場合、C:、D:のみルートディレクトリとして指定したいのですが、BROWSEINFO構造体のpidlRootには複数のルートを指定できるのでしょうか?


シャノン  2004-12-23 04:47:42  No: 55773

> BROWSEINFO構造体のpidlRootには複数のルートを指定できるのでしょうか?

できません。
唯一だから「ルート」なのですし。


瀬戸っぷ  2004-12-23 05:57:30  No: 55774

> 少し足らなかったのですが、例えば、C:、D:、E:とドライブが存在する場合、
> C:、D:のみルートディレクトリとして指定したいのですが、
> BROWSEINFO構造体のpidlRootには複数のルートを指定できるのでしょうか?

ルートの件に関してはシャノンさんからのレスがありますので…
特定のドライブ以下以外は[OK]ボタンを押せないようにする。
という方法ならあります。

BROWSEINFO構造体のulFlagsメンバでフックを有効に、
lpfnメンバでフック関数を指定して、
フック関数の方でBFFM_SELCHANGEDメッセージを受け取った際に判定、
BFFM_ENABLEOKメッセージで制御できます。

# キーワードで検察してみて下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加