如何设置Commondialog控件的初始化路径
把cdl1.InitDir 
设为Windows里面的'我的文档'

解决方案 »

  1.   

    Using SHGetSpecialFolderLocation to Find Popular Shell Folders:
    http://vbnet.mvps.org/index.html?code/browse/shpathidlist.htm
      

  2.   

    例如获得我的文档的路径的代码是:
    Const CSIDL_DESKTOP = &H0
    Const CSIDL_PROGRAMS = &H2
    Const CSIDL_CONTROLS = &H3
    Const CSIDL_PRINTERS = &H4
    Const CSIDL_PERSONAL = &H5
    Const CSIDL_FAVORITES = &H6
    Const CSIDL_STARTUP = &H7
    Const CSIDL_RECENT = &H8
    Const CSIDL_SENDTO = &H9
    Const CSIDL_BITBUCKET = &HA
    Const CSIDL_STARTMENU = &HB
    Const CSIDL_DESKTOPDIRECTORY = &H10
    Const CSIDL_DRIVES = &H11
    Const CSIDL_NETWORK = &H12
    Const CSIDL_NETHOOD = &H13
    Const CSIDL_FONTS = &H14
    Const CSIDL_TEMPLATES = &H15
    Const MAX_PATH = 260
    Private Type SHITEMID
        cb As Long
        abID As Byte
    End Type
    Private Type ITEMIDLIST
        mkid As SHITEMID
    End Type
    Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
    Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
    Private Sub Form_Load()
         MsgBox GetSpecialfolder(CSIDL_PERSONAL)
    End Sub
    Private Function GetSpecialfolder(CSIDL As Long) As String
        Dim r As Long
        Dim IDL As ITEMIDLIST
        'Get the special folder
        r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
        If r = NOERROR Then
            'Create a buffer
            Path$ = Space$(512)
            'Get the path from the IDList
            r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
            'Remove the unnecessary chr$(0)'s
            GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
            Exit Function
        End If
        GetSpecialfolder = ""
    End Function