引用:
確認ですが
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を指定するので生かしたほうがよいと思います。
いかがでしょうか?
おぶしっ。
はい、思いっきりミスです。
もともとは、まず自分で使う用に参考にしながら組んで、それから適当に関数にしてここに書きましたので、
そのときのミスですね・・・
↓修正版です
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード:
Function SelectFolderPath(hWnd As HWND,DialogName As BytePtr,Flags As Long,Root As Long) As String
Dim bor As BROWSEINFO
Dim path[1025] As Byte
Dim id As Long
Dim str As String
Dim text As String
If DialogName="" Then
DialogName="フォルダーの選択"
End If
If Flags=0 Then
Flags=BIF_DONTGOBELOWDOMAIN or &H1
End If
If Root=0 Then
Root=&H0
End If
With bor
.hwndOwner=hWnd
.lpszTitle=DialogName
.ulFlags=Flags
.pidlRoot=Root
End With
id=SHBrowseForFolder(bor)
If id=FALSE Then
Exit Function
End If
SHGetPathFromIDList(id,path)
text=MakeStr(path)
free(path)
str=Right$(text,1)
If str<>"\" Then
text=text+"\"
End If
SelectFolderPath=text
End Function
しなくても分かるかな?w
ちなみに何で関数の形にしてここに置くかと言うと、
自分がまだプログラミングのぷの字も知らない頃、とにかく慣れようと手当たり次第ここのコードをコピペしてました。
そのときに関数の形で置いてくれている方の物はものすごく助かったので、
自分も(多少ですが)公開できるようになった今、そんな人に向けて関数の形で書いてます。
はい、どーでもいいですね 笑
また修正点などありましたら、遠慮なく突っ込んであげてください~