フォルダーの選択ダイアログ

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: フォルダーの選択ダイアログ

フォルダーの選択ダイアログ

by 水波形 » 2011年3月05日(土) 14:20

DialogNameはBytePtrなので、
文字列と直接ひかくするのは良くない。
ぬ・・・そうなのですか・・・
やはりまだまだ自分は分かってない事が多いですね・・・

コード: 全て選択


If DialogName[0]=0 Then
        lstrcpy(DialogName,"フォルダーの選択")
    End If 
こちらに書き換えてご使用ください~

by HSABP » 2011年3月04日(金) 02:06

DialogNameはBytePtrなので、
文字列と直接ひかくするのは良くない。

コード: 全て選択


   If DialogName[0]=0 Then
        lstrcpy(DialogName,"フォルダーの選択")
    End If
引数をDialogName As Stringにして
.lpszTitle=StrPtr(DialogName)
とでもすべき。

フォルダーの選択ダイアログ

by 水波形 » 2011年3月04日(金) 00:55

確認ですが
With bor
.hwndOwner=hMainWnd
.lpszTitle=DialogName
.ulFlags=Flags
.pidlRoot=Root
End With



With bor
.hwndOwner=hWnd
.lpszTitle=DialogName
.ulFlags=Flags
.pidlRoot=Root
End With
が正解ですね。

せっかくhWndを指定するので生かしたほうがよいと思います。
いかがでしょうか?
おぶしっ。
はい、思いっきりミスです。

もともとは、まず自分で使う用に参考にしながら組んで、それから適当に関数にしてここに書きましたので、
そのときのミスですね・・・

↓修正版です
しなくても分かるかな?w

ちなみに何で関数の形にしてここに置くかと言うと、
自分がまだプログラミングのぷの字も知らない頃、とにかく慣れようと手当たり次第ここのコードをコピペしてました。
そのときに関数の形で置いてくれている方の物はものすごく助かったので、
自分も(多少ですが)公開できるようになった今、そんな人に向けて関数の形で書いてます。

はい、どーでもいいですね 笑

また修正点などありましたら、遠慮なく突っ込んであげてください~

確認ですが

by たかせ » 2011年3月03日(木) 15:46

ウインドー系のプログラムでないのでhMainWndを使用していなくて、そのためコンパイルエラーが出て気が付きました。

確認ですが
With bor
.hwndOwner=hMainWnd
.lpszTitle=DialogName
.ulFlags=Flags
.pidlRoot=Root
End With

With bor
.hwndOwner=hWnd
.lpszTitle=DialogName
.ulFlags=Flags
.pidlRoot=Root
End With
が正解ですね。

せっかくhWndを指定するので生かしたほうがよいと思います。
いかがでしょうか?

フォルダーの選択ダイアログ

by 水波形 » 2011年3月02日(水) 14:13

最近必要になったので、調べまわって書いてみました。

BytePtr型がいまいち理解できていないので、とりあえず戻り値はString型でやってます。
BytePtrってmalloc関数使わないと文字入れられないのか思ってたけど、そうでもないのね。

一応動きますが、直せる方がいらっしゃいましたら直してください。
とりあえず、これだけあれば使えるかなぁ・・・って感じです。
後は適当に調べてください~

蛇足ですが、
SHBrowseForFolder関数で返って来る数値でファイルパスが決まるとは思ってもいなかった。
SHGetPathFromIDList関数はどうやって識別しているのか謎。
まあ、今の自分には理解できない事でしょうが・・・

良かったら使ってみてください~
重複あったらすいません。

ページトップ