ファイルの指定をするときは、普通にCommonDialogを使用すると思いますが、
フォルダーだけ指定したいので、表題のとおりLhasa等で使用している
フォルダ指定のみのものを使用したいのですが、どのAPIを使用すればいいかわかりません。
どうか、よろしくお願いいたします。
SHBrowseForFolder以下いくつかのAPIを使います。
詳しくは…。確かここのホームページにも解説があったような…。
最近上のほうにいってないので、あいまいですけど。
さて、Lhasaはたしか、フォルダダイアログの下にいくつかコントロールがありましたよね、
あれは、フォルダダイアログをフックすることで実現します。
ええと…。
たしかうちに、フックをしてるモジュールがあったので、
見つけたらおいておきますね。
ここのホームページに載ってますよ。
ダイアログの
SHBrowseForFolder(「ファイルを参照」ダイアログを表示する)です。
「ファイルを参照」を参照になってますが、
フォルダです。(^o^)
自分もこれを使ってますんで、間違いないです。
お待たせしました。
http://homepage2.nifty.com/_omp/ShowDirectory.lzh
とりあえずここに、前作ったフォルダダイアログ拡張モジュールをおいておきます。
フォルダダイアログの拡張には、これを参考にしてください。
CallBackFunctionに指定する定数の解説
sdrCallBackNone コールバック関数には何も指定しない
sdrNormalDialog コールバック関数にBasicDirを指定。初期フォルダを指定できるのみ。
sdrExistsCheck コールバック関数にExistsFilesを指定。拡張子に関連付けられたEXEファイルが存在しなかったときにでるものと同じもの。
sdrCreateSelector コールバック関数にEditDialogを指定。フォルダ選択兼作成ダイアログとして動かせるようになる。
すべての専用メッセージに応答しているので、参考にするなら、
EditDialogが参考になると思います。
(専用のメッセージは、BFFM_XXXXです。知っている限りではこの3つですべてですが、
たぶんWM_XXXXのウィンドウズメッセージも流れてくるでしょう)
フォルダダイアログを拡張して、下にボタンをおいたりするには、
初期化時にダイアログのサイズを調べて、下にCreateWindowでボタンを設置…ですね。
とてもややこしいことになりますけど。
いろいろと参考になりました。okuさん、たかみちえさん、ありがとうございます。
参考にさせてもらいます。助かりました。
ツイート | ![]() |