ページ 1 / 1
DLLの「フォルダの参照」の・・・
Posted: 2007年2月27日(火) 20:49
by えみゅ@初心者
ボタンで「参照」というボタンを作って「フォルダの参照」を出すところまでは
出来たのですが、選択してOKをクリックしたときにエディトボックスにフォルダのパスが出るようにしたいのですが分かりません。
でもヘルプセンターで探してみましたが、私の知識ではよく分からないので、皆様に出来たら教えていただきたいと思って書き込みました。
私はget~だろうと見当を付けて調べましたが・・・。
ダメな初心者ですが、どなたか教えていただければ幸いです。
Re: DLLの「フォルダの参照」の・・・
Posted: 2007年2月27日(火) 21:44
by 7
> ボタンで「参照」というボタンを作って「フォルダの参照」を出すところまでは
> 出来たのですが、選択してOKをクリックしたときにエディトボックスにフォルダのパスが出るようにしたいのですが分かりません。
以下のコードを参考にしたんですよね?
Win32プログラミング講座 ~ Step14. DLLを作る ~ [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Function Export GetFolderDlg(hWnd As Long, lpFolder As BytePtr) As Long
Dim bi As BROWSEINFO
Dim pidlBrowse As VoidPtr
'BROWSEINFO構造体の初期化
FillMemory(VarPtr(bi),Len(bi),0)
bi.hwndOwner=hWnd
bi.lpszTitle="フォルダの選択"
bi.ulFlags=BIF_RETURNONLYFSDIRS
'「フォルダの参照」ダイアログボックスを表示
pidlBrowse=SHBrowseForFolder(bi)
If pidlBrowse Then
'フォルダへのパスを取得(lpFolderポインタが示すバッファにコピー)
SHGetPathFromIDList(pidlBrowse, lpFolder)
GetFolderDlg=1
Else
GetFolderDlg=0
End If
End Function
この関数はフォルダが選択された場合、
1 が返り、フォルダのパスがBytePtr型変数
lpFolderに格納されます。
エディットボックスに文字列を設定するにはSetWindowText()関数やSetDlgItemText()関数を使います。
コード: 全て選択
Dim lpFolder As BytePtr
Dim hEdit As HWND
' エディットボックスのハンドルを取得
hEdit=GetDlgItem(hMainWnd,EditBox1)
' フォルダのパスを取得した場合、エディットボックスにパスを設定
If GetFolderDlg(hMainWnd,lpFolder) Then
' SetWindowText()関数を使う場合
SetWindowText(hEdit,lpFolder)
' SetDlgItemText()関数を場合
SetDlgItemText(hMainWnd,EditBox1,lpFolder)
End If
Posted: 2007年3月03日(土) 20:12
by えみゅ
出来ました。ありがとうございます。