API: Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA"
( pOpenfilename As OPENFILENAME) As Long
结构: Private Type OPENFILENAME
lStructSize As Long 'OPENFILENAME 类型的结构对象的大小
hwndOwner As Long '调用OpenFile对话框窗体的句柄
hInstance As Long '当给出OFN_ENABLETEMPLATEHANDLE标志时,指定对话框模版的句柄.当给出OFN_ENABLETEMPLATE标志时,指定名为lpTemplateName的对话框模版的句柄.
lpstrFilter As String '文件类型过滤器 Filter Name & Chr(0) & Filter
lpstrCustomFilter As String '保存用户选择的过滤器
nMaxCustFilter As Long '指定保存用户选择过滤器的字符长度
nFilterIndex As Long '对话框默认显示的过滤器索引
lpstrFile As String '默认文件名,多数设为NULL
nMaxFile As Long 'lpstrFile内存缓冲区大小
lpstrFileTitle As String '返回用户选择的文件名
nMaxFileTitle As Long '用户选择的文件名最大长度
lpstrInitialDir As String '对话框打开始的默认文件夹
lpstrTitle As String '对话框标题
flags As Long '对话框功能标志
nFileOffset As Integer '返回lpstrFile中文件名的起始字符数
nFileExtension As Integer '返回lpstrFile中扩展名的起始字符数
lpstrDefExt As String '默认扩展名
lCustData As Long '指定发送给hook的内容
lpfnHook As Long 'hook例程指针
lpTemplateName As String '对话框模版名称
End Type
源代码: Priv ate Sub OpenDlg()
Dim OpenDlg As OPENFILENAME
Dim Filename As String
With OpenDlg
.lStructSize = Len(OpenFile)
.hwndOwner = hWnd
.hInstance = App.hInstance
.lpstrFilter = "Batch Files (*.bat)" & Chr(0) & "*.BAT" & Chr(0)
.lpstrFile = String(257, 0)
.nMaxFile = Len(OpenFile.lpstrFile) - 1
.lpstrFileTitle = OpenFile.lpstrFile
.nMaxFileTitle = OpenFile.nMaxFile
.lpstrTitle = "Open File:"
.flags = &H1000 + &H800
End With
GetOpenFileName OpenDlg
Filename=OpemGlg.lpstrFile
End Sub
( pOpenfilename As OPENFILENAME) As Long
结构: Private Type OPENFILENAME
lStructSize As Long 'OPENFILENAME 类型的结构对象的大小
hwndOwner As Long '调用OpenFile对话框窗体的句柄
hInstance As Long '当给出OFN_ENABLETEMPLATEHANDLE标志时,指定对话框模版的句柄.当给出OFN_ENABLETEMPLATE标志时,指定名为lpTemplateName的对话框模版的句柄.
lpstrFilter As String '文件类型过滤器 Filter Name & Chr(0) & Filter
lpstrCustomFilter As String '保存用户选择的过滤器
nMaxCustFilter As Long '指定保存用户选择过滤器的字符长度
nFilterIndex As Long '对话框默认显示的过滤器索引
lpstrFile As String '默认文件名,多数设为NULL
nMaxFile As Long 'lpstrFile内存缓冲区大小
lpstrFileTitle As String '返回用户选择的文件名
nMaxFileTitle As Long '用户选择的文件名最大长度
lpstrInitialDir As String '对话框打开始的默认文件夹
lpstrTitle As String '对话框标题
flags As Long '对话框功能标志
nFileOffset As Integer '返回lpstrFile中文件名的起始字符数
nFileExtension As Integer '返回lpstrFile中扩展名的起始字符数
lpstrDefExt As String '默认扩展名
lCustData As Long '指定发送给hook的内容
lpfnHook As Long 'hook例程指针
lpTemplateName As String '对话框模版名称
End Type
源代码: Priv ate Sub OpenDlg()
Dim OpenDlg As OPENFILENAME
Dim Filename As String
With OpenDlg
.lStructSize = Len(OpenFile)
.hwndOwner = hWnd
.hInstance = App.hInstance
.lpstrFilter = "Batch Files (*.bat)" & Chr(0) & "*.BAT" & Chr(0)
.lpstrFile = String(257, 0)
.nMaxFile = Len(OpenFile.lpstrFile) - 1
.lpstrFileTitle = OpenFile.lpstrFile
.nMaxFileTitle = OpenFile.nMaxFile
.lpstrTitle = "Open File:"
.flags = &H1000 + &H800
End With
GetOpenFileName OpenDlg
Filename=OpemGlg.lpstrFile
End Sub
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
按下command1按钮即可实现打开文件的对话框,同理保存文件对话框也一样。
Private Sub Command1_Click() Dim OFName As OPENFILENAME
OFName.lStructSize = Len(OFName)
OFName.lpstrFilter = "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
OFName.lpstrFile = Space$(254)
OFName.nMaxFile = 255
OFName.lpstrFileTitle = Space$(254)
OFName.nMaxFileTitle = 255
OFName.lpstrInitialDir = "C:\"
OFName.lpstrTitle = "打开文件"
OFName.flags = 0End Sub
有了GetOpenFileName,和OPENFILENAME 就齐了