SHBrowseForFolderのエディットボックスの取得方法 – プログラミング – Home

通知
すべてクリア

[解決済] SHBrowseForFolderのエディットボックスの取得方法


lise
 lise
(@lise)
ゲスト
結合: 21年前
投稿: 7
Topic starter  

SHBrowseForFolderをBIF_EDITのフラグを立てて呼び出すことで、
エディットボックスが作成されますが、
これの入力値を取得する方法はあるのでしょうか。

利用方法としてフォルダ選択をしたパスに対して、
エディットボックスに入力した名称のフォルダを作成しようと考えております。
(新規フォルダ作成ボタンでも同じ機能を実現できなくはないですが。。。)


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

私の環境では、そのエディットボックスはコントロール ID が 0x3744 らしいので、コ
ールバック関数内で GetDlgItemText でも呼んでやれば取得できるでしょう。
が、すべての OS で ID が 0x3744 であることは保障できないので、あまりおすすめは
できません。

新しいフォルダを作成する目的でしたら、なぜ新規フォルダ作成ボタンを使わないので
しょうか?
Win9x 系を考慮するためというのでしたら止むを得ませんが、そうでないなら標準の機
能を使っておくべきかと思います。

どうしても自作するのでしたら、BIF_EDIT を使わずに、自分で ID を決めたエディット
ボックスを作ってやれば、すべての環境で同じ ID になるでしょう。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

エディットボックスの入力はそのまま親に通知されるので(spy++で確認)、
親をサブクラス化すればOKでは。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

BIF_EDITBOX ってフラグを普段使わないので、的確なアドバイスができませんでした。
ごめんなさい。

フラグに BIF_VALIDATE を含めてやれば、OK を押したときにエディットボックスに無効
なパスが入っていると、コールバック関数に BFFM_VALIDATEFAILED が飛んできますね。
この lParam が、エディットボックスに入力した文字列になっています。

ここでフォルダ作成処理を行えばいいと思います。
それを中央のツリービューに反映させたいのであればその処理も行う必要があります
ね。


返信引用
lise
 lise
(@lise)
ゲスト
結合: 21年前
投稿: 7
Topic starter  

シャノンさん、nさん、ご回答いただきましてありがとうございます。

新規フォルダボタンを使わない理由としては、
ユーザのオペレーションが多少煩雑になってしまうことを懸念したからです。

BIF_VALIDATEのフラグを立てることでエディットボックスの文字列を
確認することができました。これで想定する機能を実現できそうです。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました