Wrox Home  
Search P2P Archive for: Go

  Return to Index  

pro_vb thread: Re: CommonDialog Control Help


Message #1 by "Pankaj Agarwal" <pankajagarwal45@y...> on Tue, 22 Jan 2002 22:19:40
Guy,

I have two questions :

1) How can i refresh and then
programatically select a node/folder in the folders treeview ?

2) Is there any ocx availabe for this "Browse Folders" facility, actually 
i want to customize it by combining with some other controls.

Thanks
Pankaj


> Mark,
> 
> Use the SHBrowseForFolder API as shown below
> 
> Private Type BrowseInfo
>     hWndOwner As Long
>     pIDLRoot As Long
>     pszDisplayName As Long
>     lpszTitle As Long
>     ulFlags As Long
>     lpfnCallback As Long
>     lParam As Long
>     iImage As Long
> End Type
> 
> Const BIF_RETURNONLYFSDIRS = 1
> Const MAX_PATH = 260
> 
> Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
> Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal 
> lpString1 As String, ByVal lpString2 As String) As Long
> Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As 
> BrowseInfo) As Long
> Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal 
pidList 
> As Long, ByVal lpBuffer As String) As Long
> 
> 
> Private Sub Form_Load()
> 
>        Dim iNull As Integer, lpIDList As Long, lResult As Long
>     Dim sPath As String, udtBI As BrowseInfo
> 
>     With udtBI
>         'Set the owner window
>         .hWndOwner = Me.hWnd
>         'lstrcat appends the two strings and returns the memory address
>         .lpszTitle = lstrcat("C:\", "")
>         'Return only if the user selected a directory
>         .ulFlags = BIF_RETURNONLYFSDIRS
>     End With
> 
>     'Show the 'Browse for folder' dialog
>     lpIDList = SHBrowseForFolder(udtBI)
>     If lpIDList Then
>         sPath = String$(MAX_PATH, 0)
>         'Get the path from the IDList
>         SHGetPathFromIDList lpIDList, sPath
>         'free the block of memory
>         CoTaskMemFree lpIDList
>         iNull = InStr(sPath, vbNullChar)
>         If iNull Then
>             sPath = Left$(sPath, iNull - 1)
>         End If
>     End If
> 
>     MsgBox sPath
> End Sub
> 
> Paste that straight into a new Standard EXE project and you will get the 
> picture
> 
> Guy
> 
> 
> 
> 
> 
> 
> > Hi,
> > 
> > I using a commondialog control, but only want the user
> > to select a path/destination/folderm, not a file.  
> > 
> > Example: c:\MyDocuments
> > 
> > NOT:
> > 
> > C:\MyDocuments\mydoc.doc
> > 
> > How can I prevent the commondialog from showing files?
> > 
> > TIA, 
> > Mark
> > 

  Return to Index