 |
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