Current News Archived News Search News Discussion Forum Old Forum Install Programs More Downloads... Troubleshooting Source Code Format Specs. Misc. Information Non-SF Stuff Links Small banner for links to this site: |
diff --git a/FileDialog.bas b/FileDialog.bas
--- a/FileDialog.bas
+++ b/FileDialog.bas
-Attribute VB_Name = "FileDialog"
-Option Explicit
-
-Public NullPtr As String
-
-Type OPENFILENAME
- lStructSize As Long
- hwndOwner As Long
- hInstance As Long
- Filter As String
- CustomFilter As String
- nMaxCustFilter As Long
- FilterIndex As Long
- FileName As String
- MaxFileSize As Long
- FileTitle As String
- MaxFileTitleSize As Long
- InitDir As String
- DialogTitle As String
- Flags As Long
- nFileOffset As Integer
- nFileExtension As Integer
- DefaultExt As String
- lCustData As Long
- lpfnHook As Long
- lpTemplateName As String
-End Type
-
-Type BROWSEINFO
- hwndOwner As Long
- pidlRoot As Long
- DisplayName As String
- Title As String
- Flags As Long
- lpfn As Long
- lParam As Long
- iImage As Long
-End Type
-
-Declare Function CommDlgExtendedError Lib "Comdlg32.dll" () As Long
-Declare Function GetOpenFileName Lib "Comdlg32.dll" _
- Alias "GetOpenFileNameA" (lpofn As OPENFILENAME) As Boolean
-Declare Function GetSaveFileName Lib "Comdlg32.dll" _
- Alias "GetSaveFileNameA" (lpofn As OPENFILENAME) As Boolean
-Declare Function SHBrowseForFolder Lib "Shell32.dll" _
- (lpbi As BROWSEINFO) As Long
-Declare Function SHGetPathFromIDList Lib "Shell32.dll" ( _
- pidl As Long, _
- ByRef pszPath As Byte) As Boolean
-
-Public Const OFN_READONLY As Long = &H1
-Public Const OFN_OVERWRITEPROMPT As Long = &H2
-Public Const OFN_HIDEREADONLY As Long = &H4
-Public Const OFN_NOCHANGEDIR As Long = &H8
-Public Const OFN_SHOWHELP As Long = &H10
-Public Const OFN_ENABLEHOOK As Long = &H20
-Public Const OFN_ENABLETEMPLATE As Long = &H40
-Public Const OFN_ENABLETEMPLATEHANDLE As Long = &H80
-Public Const OFN_NOVALIDATE As Long = &H100
-Public Const OFN_ALLOWMULTISELECT As Long = &H200
-Public Const OFN_EXTENSIONDIFFERENT As Long = &H400
-Public Const OFN_PATHMUSTEXIST As Long = &H800
-Public Const OFN_FILEMUSTEXIST As Long = &H1000
-Public Const OFN_CREATEPROMPT As Long = &H2000
-Public Const OFN_SHAREAWARE As Long = &H4000
-Public Const OFN_NOREADONLYRETURN As Long = &H8000
-Public Const OFN_NOTESTFILECREATE As Long = &H10000
-Public Const OFN_NONETWORKBUTTON As Long = &H20000
-Public Const OFN_NOLONGNAMES As Long = &H40000 ' force no long names for 4.x modules
-Public Const OFN_EXPLORER As Long = &H80000 ' new look commdlg
-Public Const OFN_NODEREFERENCELINKS As Long = &H100000
-Public Const OFN_LONGNAMES As Long = &H200000 ' force long names for 3.x modules
-Public Const OFN_ENABLEINCLUDENOTIFY As Long = &H400000 ' send include message to callback
-Public Const OFN_ENABLESIZING As Long = &H800000
-
-Public Const BIF_RETURNONLYFSDIRS As Long = &H1 ' For finding a folder to start document searching
-Public Const BIF_DONTGOBELOWDOMAIN As Long = &H2 ' For starting the Find Computer
-Public Const BIF_STATUSTEXT As Long = &H4
-Public Const BIF_RETURNFSANCESTORS As Long = &H8
-Public Const BIF_EDITBOX As Long = &H10
-Public Const BIF_VALIDATE As Long = &H20 ' insist on valid result (or CANCEL)
-
-Public Const BIF_BROWSEFORCOMPUTER As Long = &H1000 ' Browsing for Computers.
-Public Const BIF_BROWSEFORPRINTER As Long = &H2000 ' Browsing for Printers
-Public Const BIF_BROWSEINCLUDEFILES As Long = &H4000 ' Browsing for Everything
-
-Function GetPathFromID(ByVal dwID As Long) As String
-Dim buffer(1 To 260) As Byte
-GetPathFromID = NullPtr
-If SHGetPathFromIDList(ByVal dwID, buffer(1)) Then
- GetPathFromID = StrConv(buffer, vbUnicode)
- StripNull GetPathFromID
-End If
-End Function
-Sub ReplaceChar(ByRef TextStr As String, ByVal Char As String, ByVal NewChar As String)
-If Len(Char) > 1 Then Char = Left$(Char, 1)
-If Len(NewChar) > 1 Then NewChar = Left$(NewChar, 1)
-Dim cNum As Long, cNum2 As Long
-For cNum = 1 To Len(TextStr)
- cNum2 = InStr(cNum, TextStr, Char)
- If cNum2 Then
- cNum = cNum2
- Mid$(TextStr, cNum, 1) = NewChar
- Else
- Exit Sub
- End If
-Next cNum
-End Sub
-Sub StripNull(ByRef TextStr As String)
-Dim cNum As Long
-cNum = InStr(1, TextStr, Chr$(0))
-If cNum Then
- TextStr = Left(TextStr, cNum - 1)
-End If
-End Sub
-Sub StripNullMulti(ByRef TextStr As String)
-Dim cNum As Long, cNum2 As Long
-For cNum = 1 To Len(TextStr)
- cNum2 = InStr(cNum, TextStr, Chr$(0))
- If cNum2 Then
- cNum = cNum2
- cNum2 = InStr(cNum + 1, TextStr, Chr$(0))
- If cNum + 1 = cNum2 Or cNum2 = 0 Then
- TextStr = Left(TextStr, cNum - 1)
- Exit Sub
- End If
- Else
- Exit Sub
- End If
-Next cNum
-End Sub
-Sub InitFileDialog(ByRef lpFileDialog As OPENFILENAME)
-lpFileDialog.lStructSize = Len(lpFileDialog)
-lpFileDialog.hwndOwner = 0
-lpFileDialog.hInstance = 0
-lpFileDialog.Filter = NullPtr
-lpFileDialog.CustomFilter = NullPtr
-lpFileDialog.nMaxCustFilter = 0
-lpFileDialog.FilterIndex = 0
-lpFileDialog.FileName = NullPtr
-lpFileDialog.MaxFileSize = 260
-lpFileDialog.FileTitle = NullPtr
-lpFileDialog.MaxFileTitleSize = 260
-lpFileDialog.InitDir = NullPtr
-lpFileDialog.DialogTitle = NullPtr
-lpFileDialog.Flags = 0
-lpFileDialog.nFileOffset = 0
-lpFileDialog.nFileExtension = 0
-lpFileDialog.DefaultExt = NullPtr
-lpFileDialog.lCustData = 0
-lpFileDialog.lpfnHook = 0
-lpFileDialog.lpTemplateName = NullPtr
-End Sub
-Sub InitFolderDialog(ByRef lpFolderDialog As BROWSEINFO)
-lpFolderDialog.hwndOwner = 0
-lpFolderDialog.pidlRoot = 0
-lpFolderDialog.DisplayName = NullPtr
-lpFolderDialog.Title = NullPtr
-lpFolderDialog.Flags = 0
-lpFolderDialog.lpfn = 0
-lpFolderDialog.lParam = 0
-lpFolderDialog.iImage = 0
-End Sub
-Function ShowOpen(ByRef lpFileDialog As OPENFILENAME) As Boolean
-lpFileDialog.lStructSize = Len(lpFileDialog)
-ReplaceChar lpFileDialog.Filter, "|", Chr$(0)
-lpFileDialog.Filter = lpFileDialog.Filter + Chr$(0)
-If Len(lpFileDialog.FileName) <= lpFileDialog.MaxFileSize Then _
- lpFileDialog.FileName = lpFileDialog.FileName + String$(lpFileDialog.MaxFileSize - Len(lpFileDialog.FileName), Chr$(0))
-If Len(lpFileDialog.FileTitle) <= lpFileDialog.MaxFileTitleSize Then _
- lpFileDialog.FileTitle = lpFileDialog.FileTitle + String$(lpFileDialog.MaxFileTitleSize - Len(lpFileDialog.FileTitle), Chr$(0))
-ShowOpen = GetOpenFileName(lpFileDialog)
-lpFileDialog.Filter = Left$(lpFileDialog.Filter, Len(lpFileDialog.Filter) - 1)
-ReplaceChar lpFileDialog.Filter, Chr$(0), "|"
-If lpFileDialog.Flags And (OFN_ALLOWMULTISELECT Or OFN_EXPLORER) Then
- StripNullMulti lpFileDialog.FileName
- StripNullMulti lpFileDialog.FileTitle
-Else
- StripNull lpFileDialog.FileName
- StripNull lpFileDialog.FileTitle
-End If
-End Function
-Function ShowSave(ByRef lpFileDialog As OPENFILENAME) As Boolean
-lpFileDialog.lStructSize = Len(lpFileDialog)
-ReplaceChar lpFileDialog.Filter, "|", Chr$(0)
-lpFileDialog.Filter = lpFileDialog.Filter + Chr$(0)
-If Len(lpFileDialog.FileName) <= lpFileDialog.MaxFileSize Then _
- lpFileDialog.FileName = lpFileDialog.FileName + String$(lpFileDialog.MaxFileSize - Len(lpFileDialog.FileName), Chr$(0))
-If Len(lpFileDialog.FileTitle) <= lpFileDialog.MaxFileTitleSize Then _
- lpFileDialog.FileTitle = lpFileDialog.FileTitle + String$(lpFileDialog.MaxFileTitleSize - Len(lpFileDialog.FileTitle), Chr$(0))
-ShowSave = GetSaveFileName(lpFileDialog)
-lpFileDialog.Filter = Left$(lpFileDialog.Filter, Len(lpFileDialog.Filter) - 1)
-ReplaceChar lpFileDialog.Filter, Chr$(0), "|"
-StripNull lpFileDialog.FileName
-StripNull lpFileDialog.FileTitle
-End Function
-Function ShowFolder(ByRef lpFolderDialog As BROWSEINFO) As Long
-If Len(lpFolderDialog.DisplayName) <= 260 Then _
- lpFolderDialog.DisplayName = lpFolderDialog.DisplayName + String$(260 - Len(lpFolderDialog.DisplayName), Chr$(0))
-ShowFolder = SHBrowseForFolder(lpFolderDialog)
-StripNull lpFolderDialog.DisplayName
-End Function
+Attribute VB_Name = "FileDialog"\r
+Option Explicit\r
+\r
+Public NullPtr As String\r
+\r
+Type OPENFILENAME\r
+ lStructSize As Long\r
+ hwndOwner As Long\r
+ hInstance As Long\r
+ Filter As String\r
+ CustomFilter As String\r
+ nMaxCustFilter As Long\r
+ FilterIndex As Long\r
+ FileName As String\r
+ MaxFileSize As Long\r
+ FileTitle As String\r
+ MaxFileTitleSize As Long\r
+ InitDir As String\r
+ DialogTitle As String\r
+ Flags As Long\r
+ nFileOffset As Integer\r
+ nFileExtension As Integer\r
+ DefaultExt As String\r
+ lCustData As Long\r
+ lpfnHook As Long\r
+ lpTemplateName As String\r
+End Type\r
+\r
+Type BROWSEINFO\r
+ hwndOwner As Long\r
+ pidlRoot As Long\r
+ DisplayName As String\r
+ Title As String\r
+ Flags As Long\r
+ lpfn As Long\r
+ lParam As Long\r
+ iImage As Long\r
+End Type\r
+\r
+Declare Function CommDlgExtendedError Lib "Comdlg32.dll" () As Long\r
+Declare Function GetOpenFileName Lib "Comdlg32.dll" _\r
+ Alias "GetOpenFileNameA" (lpofn As OPENFILENAME) As Boolean\r
+Declare Function GetSaveFileName Lib "Comdlg32.dll" _\r
+ Alias "GetSaveFileNameA" (lpofn As OPENFILENAME) As Boolean\r
+Declare Function SHBrowseForFolder Lib "Shell32.dll" _\r
+ (lpbi As BROWSEINFO) As Long\r
+Declare Function SHGetPathFromIDList Lib "Shell32.dll" ( _\r
+ pidl As Long, _\r
+ ByRef pszPath As Byte) As Boolean\r
+\r
+Public Const OFN_READONLY As Long = &H1\r
+Public Const OFN_OVERWRITEPROMPT As Long = &H2\r
+Public Const OFN_HIDEREADONLY As Long = &H4\r
+Public Const OFN_NOCHANGEDIR As Long = &H8\r
+Public Const OFN_SHOWHELP As Long = &H10\r
+Public Const OFN_ENABLEHOOK As Long = &H20\r
+Public Const OFN_ENABLETEMPLATE As Long = &H40\r
+Public Const OFN_ENABLETEMPLATEHANDLE As Long = &H80\r
+Public Const OFN_NOVALIDATE As Long = &H100\r
+Public Const OFN_ALLOWMULTISELECT As Long = &H200\r
+Public Const OFN_EXTENSIONDIFFERENT As Long = &H400\r
+Public Const OFN_PATHMUSTEXIST As Long = &H800\r
+Public Const OFN_FILEMUSTEXIST As Long = &H1000\r
+Public Const OFN_CREATEPROMPT As Long = &H2000\r
+Public Const OFN_SHAREAWARE As Long = &H4000\r
+Public Const OFN_NOREADONLYRETURN As Long = &H8000\r
+Public Const OFN_NOTESTFILECREATE As Long = &H10000\r
+Public Const OFN_NONETWORKBUTTON As Long = &H20000\r
+Public Const OFN_NOLONGNAMES As Long = &H40000 ' force no long names for 4.x modules\r
+Public Const OFN_EXPLORER As Long = &H80000 ' new look commdlg\r
+Public Const OFN_NODEREFERENCELINKS As Long = &H100000\r
+Public Const OFN_LONGNAMES As Long = &H200000 ' force long names for 3.x modules\r
+Public Const OFN_ENABLEINCLUDENOTIFY As Long = &H400000 ' send include message to callback\r
+Public Const OFN_ENABLESIZING As Long = &H800000\r
+\r
+Public Const BIF_RETURNONLYFSDIRS As Long = &H1 ' For finding a folder to start document searching\r
+Public Const BIF_DONTGOBELOWDOMAIN As Long = &H2 ' For starting the Find Computer\r
+Public Const BIF_STATUSTEXT As Long = &H4\r
+Public Const BIF_RETURNFSANCESTORS As Long = &H8\r
+Public Const BIF_EDITBOX As Long = &H10\r
+Public Const BIF_VALIDATE As Long = &H20 ' insist on valid result (or CANCEL)\r
+\r
+Public Const BIF_BROWSEFORCOMPUTER As Long = &H1000 ' Browsing for Computers.\r
+Public Const BIF_BROWSEFORPRINTER As Long = &H2000 ' Browsing for Printers\r
+Public Const BIF_BROWSEINCLUDEFILES As Long = &H4000 ' Browsing for Everything\r
+\r
+Function GetPathFromID(ByVal dwID As Long) As String\r
+Dim buffer(1 To 260) As Byte\r
+GetPathFromID = NullPtr\r
+If SHGetPathFromIDList(ByVal dwID, buffer(1)) Then\r
+ GetPathFromID = StrConv(buffer, vbUnicode)\r
+ StripNull GetPathFromID\r
+End If\r
+End Function\r
+Sub ReplaceChar(ByRef TextStr As String, ByVal Char As String, ByVal NewChar As String)\r
+If Len(Char) > 1 Then Char = Left$(Char, 1)\r
+If Len(NewChar) > 1 Then NewChar = Left$(NewChar, 1)\r
+Dim cNum As Long, cNum2 As Long\r
+For cNum = 1 To Len(TextStr)\r
+ cNum2 = InStr(cNum, TextStr, Char)\r
+ If cNum2 Then\r
+ cNum = cNum2\r
+ Mid$(TextStr, cNum, 1) = NewChar\r
+ Else\r
+ Exit Sub\r
+ End If\r
+Next cNum\r
+End Sub\r
+Sub StripNull(ByRef TextStr As String)\r
+Dim cNum As Long\r
+cNum = InStr(1, TextStr, Chr$(0))\r
+If cNum Then\r
+ TextStr = Left(TextStr, cNum - 1)\r
+End If\r
+End Sub\r
+Sub StripNullMulti(ByRef TextStr As String)\r
+Dim cNum As Long, cNum2 As Long\r
+For cNum = 1 To Len(TextStr)\r
+ cNum2 = InStr(cNum, TextStr, Chr$(0))\r
+ If cNum2 Then\r
+ cNum = cNum2\r
+ cNum2 = InStr(cNum + 1, TextStr, Chr$(0))\r
+ If cNum + 1 = cNum2 Or cNum2 = 0 Then\r
+ TextStr = Left(TextStr, cNum - 1)\r
+ Exit Sub\r
+ End If\r
+ Else\r
+ Exit Sub\r
+ End If\r
+Next cNum\r
+End Sub\r
+Sub InitFileDialog(ByRef lpFileDialog As OPENFILENAME)\r
+lpFileDialog.lStructSize = Len(lpFileDialog)\r
+lpFileDialog.hwndOwner = 0\r
+lpFileDialog.hInstance = 0\r
+lpFileDialog.Filter = NullPtr\r
+lpFileDialog.CustomFilter = NullPtr\r
+lpFileDialog.nMaxCustFilter = 0\r
+lpFileDialog.FilterIndex = 0\r
+lpFileDialog.FileName = NullPtr\r
+lpFileDialog.MaxFileSize = 260\r
+lpFileDialog.FileTitle = NullPtr\r
+lpFileDialog.MaxFileTitleSize = 260\r
+lpFileDialog.InitDir = NullPtr\r
+lpFileDialog.DialogTitle = NullPtr\r
+lpFileDialog.Flags = 0\r
+lpFileDialog.nFileOffset = 0\r
+lpFileDialog.nFileExtension = 0\r
+lpFileDialog.DefaultExt = NullPtr\r
+lpFileDialog.lCustData = 0\r
+lpFileDialog.lpfnHook = 0\r
+lpFileDialog.lpTemplateName = NullPtr\r
+End Sub\r
+Sub InitFolderDialog(ByRef lpFolderDialog As BROWSEINFO)\r
+lpFolderDialog.hwndOwner = 0\r
+lpFolderDialog.pidlRoot = 0\r
+lpFolderDialog.DisplayName = NullPtr\r
+lpFolderDialog.Title = NullPtr\r
+lpFolderDialog.Flags = 0\r
+lpFolderDialog.lpfn = 0\r
+lpFolderDialog.lParam = 0\r
+lpFolderDialog.iImage = 0\r
+End Sub\r
+Function ShowOpen(ByRef lpFileDialog As OPENFILENAME) As Boolean\r
+lpFileDialog.lStructSize = Len(lpFileDialog)\r
+ReplaceChar lpFileDialog.Filter, "|", Chr$(0)\r
+lpFileDialog.Filter = lpFileDialog.Filter + Chr$(0)\r
+If Len(lpFileDialog.FileName) <= lpFileDialog.MaxFileSize Then _\r
+ lpFileDialog.FileName = lpFileDialog.FileName + String$(lpFileDialog.MaxFileSize - Len(lpFileDialog.FileName), Chr$(0))\r
+If Len(lpFileDialog.FileTitle) <= lpFileDialog.MaxFileTitleSize Then _\r
+ lpFileDialog.FileTitle = lpFileDialog.FileTitle + String$(lpFileDialog.MaxFileTitleSize - Len(lpFileDialog.FileTitle), Chr$(0))\r
+ShowOpen = GetOpenFileName(lpFileDialog)\r
+lpFileDialog.Filter = Left$(lpFileDialog.Filter, Len(lpFileDialog.Filter) - 1)\r
+ReplaceChar lpFileDialog.Filter, Chr$(0), "|"\r
+If lpFileDialog.Flags And (OFN_ALLOWMULTISELECT Or OFN_EXPLORER) Then\r
+ StripNullMulti lpFileDialog.FileName\r
+ StripNullMulti lpFileDialog.FileTitle\r
+Else\r
+ StripNull lpFileDialog.FileName\r
+ StripNull lpFileDialog.FileTitle\r
+End If\r
+End Function\r
+Function ShowSave(ByRef lpFileDialog As OPENFILENAME) As Boolean\r
+lpFileDialog.lStructSize = Len(lpFileDialog)\r
+ReplaceChar lpFileDialog.Filter, "|", Chr$(0)\r
+lpFileDialog.Filter = lpFileDialog.Filter + Chr$(0)\r
+If Len(lpFileDialog.FileName) <= lpFileDialog.MaxFileSize Then _\r
+ lpFileDialog.FileName = lpFileDialog.FileName + String$(lpFileDialog.MaxFileSize - Len(lpFileDialog.FileName), Chr$(0))\r
+If Len(lpFileDialog.FileTitle) <= lpFileDialog.MaxFileTitleSize Then _\r
+ lpFileDialog.FileTitle = lpFileDialog.FileTitle + String$(lpFileDialog.MaxFileTitleSize - Len(lpFileDialog.FileTitle), Chr$(0))\r
+ShowSave = GetSaveFileName(lpFileDialog)\r
+lpFileDialog.Filter = Left$(lpFileDialog.Filter, Len(lpFileDialog.Filter) - 1)\r
+ReplaceChar lpFileDialog.Filter, Chr$(0), "|"\r
+StripNull lpFileDialog.FileName\r
+StripNull lpFileDialog.FileTitle\r
+End Function\r
+Function ShowFolder(ByRef lpFolderDialog As BROWSEINFO) As Long\r
+If Len(lpFolderDialog.DisplayName) <= 260 Then _\r
+ lpFolderDialog.DisplayName = lpFolderDialog.DisplayName + String$(260 - Len(lpFolderDialog.DisplayName), Chr$(0))\r
+ShowFolder = SHBrowseForFolder(lpFolderDialog)\r
+StripNull lpFolderDialog.DisplayName\r
+End Function\r
|