如何在VB中调用通用对话框来让用户选择一个路径。是路径不是打开文件对话框

解决方案 »

  1.   

    Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
    Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BROWSEINFO) As Long
    Private Const BIF_RETURNONLYFSDIRS = &H1
    Private Const BIF_NEWDIALOGSTYLE = &H40
    Private Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End TypePrivate Sub Command1_Click()
    Text1.Text = BrowseFolder(Me.hwnd, "请选择您文件夹")
    End Sub
    '浏览文件夹函数
    Public Function BrowseFolder(ByVal hwnd As Long, ByVal Title As String) As String
        Dim bi As BROWSEINFO
        Dim rtn, pid As Long
        Dim path As String * 512
        Dim pos As Integer
        With bi
            .hOwner = hwnd
            .ulFlags = BIF_RETURNONLYFSDIRS Or BIF_NEWDIALOGSTYLE
            .lpszTitle = Title
        End With
        pid = SHBrowseForFolder(bi)
        rtn = SHGetPathFromIDList(ByVal pid, ByVal path)
        If rtn Then
            pos = InStr(path, Chr(0))
            BrowseFolder = Left(path, pos - 1)
        Else
            BrowseFolder = ""
        End If
    End Function