Open Dialog Box API Call

R

rp

Hi,

I've got the Open Dialog Box API calling working ok, but I want to populate
a text box with the full path name of whatever file they select. When I try
this it puts the full path into the text box fine, but if I click on the
text box to edit it it displays loads of Squares after the filepath...kind
of like this:

C:\ffastun0.ffx000000000

If I copy and paste the filename with the squares they do not show up in the
pasted text. Any ideas?

Rick

I've posted my code below.
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Sub Open_Click()
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hInstance = -1
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(256, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\"
OpenFile.lpstrTitle = "Select File"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "The User pressed the Cancel Button"
Else
FileLocationName.Value = Trim(OpenFile.lpstrFile)
End If
End Sub
 
P

Peter Hoyle

I use the following function rather than trim

' Remove null space from the file name.
fname = Left(filebox.lpstrFile, InStr(filebox.lpstrFile, vbNullChar) - 1)

You would need to replace 'filebox' with OPENFILENAME (I think!)
So
FileLocationName.Value = _
Left(filebox.lpstrFile, InStr(OPENFILENAME.lpstrFile, vbNullChar) - 1)

Cheers,
Peter
 
P

Peter Hoyle

Spot the non-deliberate error

should have been
Left(OPENFILENAME.lpstrFile, InStr(OPENFILENAME.lpstrFile, vbNullChar) - 1)

Cheers,
Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top