BCXLogo   BCX Console Demonstration Program S126.bas

 '-------------------------------------------------
 '   BrowseFolder --  Original by Jacob Navia
 '   Converted to BCX version by Kevin Diggins
 '-------------------------------------------------
 
 $LIBRARY <shell32.lib>    ' link with shell32.lib
 
 DIM Folder$
 
 IF BrowseDir("Choose a directory", Folder$) THEN
   PRINT "Chosen Folder: ", Folder$
 ELSE
   PRINT "Action Cancelled"
 END IF
 
 FUNCTION BrowseDir(Title$, Result$)
   '---------------------------------------
   LOCAL pMalloc      AS LPMALLOC
   LOCAL browseInfo   AS BROWSEINFO
   LOCAL lpItemIDList AS LPITEMIDLIST
   LOCAL Rc
   '---------------------------------------
   CONST BIF_NEWDIALOGSTYLE = 64
   '---------------------------------------
   IF S_OK <> SHGetMalloc(&pMalloc) THEN EXIT FUNCTION
   memset(&browseInfo, 0, SIZEOF(BROWSEINFO))
   browseInfo.hwndOwner      = GetActiveWindow()
   browseInfo.pszDisplayName = Result$
   browseInfo.lpszTitle      = Title$
   browseInfo.ulFlags = BIF_NEWDIALOGSTYLE
 
   lpItemIDList = SHBrowseForFolder(&browseInfo)
   IF lpItemIDList <> NULL THEN
     Result$ = ""
     IF SHGetPathFromIDList(lpItemIDList, Result$) THEN
       IF LEN(Result$) > 0 THEN Rc = 1
     END IF
     pMalloc->lpVtbl->FREE( pMalloc, lpItemIDList )
   END IF
   pMalloc->lpVtbl->Release(pMalloc) ' BCX is amazing !
   FUNCTION = Rc
 END FUNCTION