Hi Colin
I think the problem is in the sBuffer variable. When you call the functiuon
it is an emty string try to put somthing into the this string before you
call the function. For this you can use the mapbasic Sting$() function.
Therefor just add this to yor code, before you call the
SHGetPathFromIDList() function
sBuffer = String$(260, " ")
Med venlig hilsen
Peter Laulund
*************************************************************
Kort & Matrikelstyrelsen � www.kms.dk
National Survey and Cadastre - Denmark
Rentemestervej 8 � DK 2400 K�benhavn NV
E-mail: [EMAIL PROTECTED] � Home: [EMAIL PROTECTED]
Phone: +45 3587 5050 � Direct: +45 3587 5173
*************************************************************
Colin Henderson <[EMAIL PROTECTED]> - 04-05-2001 11:43:09
Besvar venligst til Colin Henderson <[EMAIL PROTECTED]>
Til: "MapInfo-L (E-mail)"
<[EMAIL PROTECTED]>
cc: (bcc: Peter Laulund/MI/KMS)
Vedr�rende: MI-L: Using API call SHBrowseForFolder
Listers,
I am trying to use the API to launch a browse for folders dialog, I want
the
user to select an existing folder on their filesystem. The output from the
dialog will then be placed in to an edittext control. The browse dialog
launches fine, and returns the pointer to the selected directory, but when
I
try to use the SHGetPathFromIDList call mapinfo crashes causing an error in
shell32. Any ideas why? Below is the code involved:
Include "MapBasic.def"
Include "Icons.def"
Include "Menu.def"
Define BIF_RETURNONLYFSDIRS 1
Define BIF_DONTGOBELOWDOMAIN 2
Define MAX_PATH 260
Type BrowseInfo
hWndOwner As Integer
pIDLRoot As Integer
pszDisplayName As Integer
lpszTitle As String
ulFlags As Integer
lpfnCallBack As Integer
lParam As Integer
iImage As Integer
End Type
Declare Sub Main
Declare Sub BrowseFolders
Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As
Integer
Declare Function SHGetPathFromIDList Lib "shell32" Alias
"SHGetPathFromIDList"
(pidList As Integer, lpBuffer As String) As Integer
Sub Main
Create Menu "Browse Folders" As
"Browse" Calling BrowseFolders
Alter Menu Bar Add "Browse Folders"
End Sub
Sub BrowseFolders
Dim lpIDList, retVal As Integer
Dim szTitle, sBuffer As String
Dim tBrowseInfo As BrowseInfo
szTitle = "Hello world. Click on a directory and its path will be
displayed in a message!"
tBrowseInfo.hWndOwner = SystemInfo(SYS_INFO_MAPINFOWND)
tBrowseInfo.lpszTitle = szTitle
tBrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
sBuffer = Space$(MAX_PATH)
retVal = SHGetPathFromIDList(lpIDList, sBuffer)
sBuffer = Left$(sBuffer, InStr(1, sBuffer, " ") - 1)
Note sBuffer
End If
End Sub
TIA
--
Regards
Colin Henderson
Associate GIS Analyst
WFI Consulting
Tel: +44 (0)1483 400937
Fax: +44 (0)1483 400
Mobile: +44 (0)7887 638771
[EMAIL PROTECTED]
_______________________________________________________________________
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, send e-mail to [EMAIL PROTECTED] and
put "unsubscribe MapInfo-L" in the message body.
Med venlig hilsen
Peter Laulund
*************************************************************
Kort & Matrikelstyrelsen � www.kms.dk
National Survey and Cadastre - Denmark
Rentemestervej 8 � DK 2400 K�benhavn NV
E-mail: [EMAIL PROTECTED] � Home: [EMAIL PROTECTED]
Phone: +45 3587 5050 � Direct: +45 3587 5173
*************************************************************
_______________________________________________________________________
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, send e-mail to [EMAIL PROTECTED] and
put "unsubscribe MapInfo-L" in the message body.