Common dialog : Open
Le code suivant vous permet d'afficher la boite de dialogue "Ouvrir" par API:
Public Const SO_ALL_FILES = "Tous les fichiers (*.*),*.*" Public Const SO_PICTURES = "Fichiers image (*.bmp; *.jpg; *.gif; *.png; *.ico; *.cur),*.bmp;*.jpg;*.gif;*.png;*.ico;*.cur" Public Const SO_BITMAP = "Image bitmap (*.bmp),*.bmp" Public Const SO_TEXT = "Document texte (*.txt),*.txt" Public Const SO_DATA = "Fichier de données (*.dat),*.dat" Public Const SO_WAV = "Sons (*.wav),*.wav" Public Enum OFN_flags OFN_ALLOWMULTISELECT = &H200 OFN_CREATEPROMPT = &H2000 OFN_EXPLORER = &H80000 ' new look commdlg OFN_EXTENSIONDIFFERENT = &H400 OFN_FILEMUSTEXIST = &H1000 OFN_HIDEREADONLY = &H4 OFN_LONGNAMES = &H200000 ' force long names for 3.x modules OFN_NOCHANGEDIR = &H8 OFN_NOLONGNAMES = &H40000 ' force no long names for 4.x modules OFN_NODEREFERENCELINKS = &H100000 OFN_NONETWORKBUTTON = &H20000 OFN_NOREADONLYRETURN = &H8000 OFN_NOTESTFILECREATE = &H10000 OFN_NOVALIDATE = &H100 OFN_OVERWRITEPROMPT = &H2 OFN_PATHMUSTEXIST = &H800 OFN_READONLY = &H1 OFN_SHAREAWARE = &H4000 OFN_SHAREFALLTHROUGH = 2 OFN_SHARENOWARN = 1 OFN_SHAREWARN = 0 OFN_SHOWHELP = &H10 OFN_ENABLEHOOK = &H20 OFN_ENABLETEMPLATE = &H40 OFN_ENABLETEMPLATEHANDLE = &H80 End Enum 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 Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Function ShowOpen(Optional InitFile As String, Optional Flags As OFN_flags, Optional Filter As String, Optional SelectedFilter As Byte = 1, Optional FilterSeparator As String = ",", Optional InitialDir As String, Optional Title As String) As String() Dim OFNStruct As OPENFILENAME, sTempTable() As String OFNStruct.lStructSize = Len(OFNStruct) OFNStruct.lpstrFilter = Replace(Filter, FilterSeparator, Chr(0)) & Chr(0) & Chr(0) OFNStruct.nFilterIndex = SelectedFilter OFNStruct.lpstrInitialDir = InitialDir & Chr(0) OFNStruct.lpstrTitle = Title & Chr(0) OFNStruct.Flags = Flags OFNStruct.lpstrFile = InitFile & String(260 - Len(InitFile), Chr(0)) & Chr(0) OFNStruct.nMaxFile = 2600 If GetOpenFileName(OFNStruct) Then If InStr(1, OFNStruct.lpstrFile, Chr(0) & Chr(0)) <> 0 Then OFNStruct.lpstrFile = Left(OFNStruct.lpstrFile, InStr(1, OFNStruct.lpstrFile, Chr(0) & Chr(0))) Else OFNStruct.lpstrFile = Left(OFNStruct.lpstrFile, InStr(1, OFNStruct.lpstrFile, Chr(0))) End If ReDim sTempTable(0) sTempTable(0) = Left(OFNStruct.lpstrFile, InStr(1, OFNStruct.lpstrFile, Chr(0)) - 1) OFNStruct.lpstrFile = Right(OFNStruct.lpstrFile, Len(OFNStruct.lpstrFile) - Len(sTempTable(0)) - 1) Do Until InStr(1, OFNStruct.lpstrFile, Chr(0)) = 0 ReDim Preserve sTempTable(UBound(sTempTable) + 1) sTempTable(UBound(sTempTable)) = Left(OFNStruct.lpstrFile, InStr(1, OFNStruct.lpstrFile, Chr(0)) - 1) OFNStruct.lpstrFile = Right(OFNStruct.lpstrFile, Len(OFNStruct.lpstrFile) - Len(sTempTable(UBound(sTempTable))) - 1) Loop End If ShowOpen = sTempTable End Function