BCX Console Demonstration Program S126.bas

 '-------------------------------------------------
 '   BrowseFolder --  Original by Jacob Navia
 '   Converted to BCX version by Kevin Diggins
 '-------------------------------------------------
 
 DIM Folder1$
 
 IF BrowseDir("Choose a directory", Folder1$) THEN
   PRINT "Chosen Folder: ", Folder1$
 ELSE
   PRINT "Action Cancelled"
 END IF
 
 FUNCTION BrowseDir(Title$, Result$)
   '---------------------------------------
   LOCAL pMalloc      AS LPMALLOC
   LOCAL browseInfo   AS BROWSEINFO
   LOCAL lpItemIDList AS LPITEMIDLIST
   LOCAL Rc
   '---------------------------------------
   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