引用什么可以调出“打开文件”对话框?

CNer 2001-11-15 03:21:10
我记得可以通过“引用”来调出“打开文件”这个系统默认的对话框的!
不是通过api函数GetOpenFileName来实现的?
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechContrac 2001-11-18
  • 打赏
  • 举报
回复
Private Sub FileOpen_Click()
On Error GoTo nofile
CommonDialog1.Filter = "Îı¾Îļþ|*.txt"
CommonDialog1.CancelError = True
CommonDialog1.ShowOpen
txtnoteedit.Text = ""
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
Line Input #1, inputdata
txtnoteedit.Text = txtnoteedit.Text + inputdata + Chr(13) + Chr(10)
Loop
Close #1
Exit Sub
nofile:
If Err.Number = 32755 Then Exit Sub
Form1.Caption = CommonDialog1.FileName
End Sub
CNer 2001-11-18
  • 打赏
  • 举报
回复
我试试。。。
enmity 2001-11-18
  • 打赏
  • 举报
回复
请把上面源代码放在模块中。
Amoon 2001-11-18
  • 打赏
  • 举报
回复
是引用 Microsoft Dialog Automation Objects
enmity 2001-11-18
  • 打赏
  • 举报
回复
上面的函数包括打开与保存两个功能。
enmity 2001-11-18
  • 打赏
  • 举报
回复
如果不用控件,一般就调用API了,除非有现成的ActiveX DLL给你引用。
如果使用API,源代码如下:

Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_EXPLORER = &H80000
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHAREWARN = 0
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHOWHELP = &H10
Public Const OFS_MAXPATHNAME = 128

Public Const OFS_FILE_OPEN_FLAGS = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or OFN_NODEREFERENCELINKS Or OFN_HIDEREADONLY
Public Const OFS_FILE_SAVE_FLAGS = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST

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

Public OFN As OPENFILENAME

Public Declare Function CommDlgExtendedError Lib "COMDLG32.DLL" () As Long
Public Declare Function GetOpenFileName Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Declare Function GetSaveFileName Lib "COMDLG32.DLL" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

Public Enum FileDlgModes
fdmOpenFile = 1
fdmSaveFile
fdmSaveFileNoConfirm
fdmOpenFileOrPrompt
End Enum

Public Function SelectFile(OwnerHWnd As Long, Optional Title$ = "", Optional Filter$ = "All Files (*.*)|*.*", Optional FilterIDX As Long = 0, Optional DefFile$, Optional DefPath$, Optional DefExt$, Optional ByVal FileMode As FileDlgModes = fdmOpenFile) As String
Dim R As Long, SP As Long, ShortSize As Long, Z As Long
With OFN
.lStructSize = Len(OFN)
.hWndOwner = OwnerHWnd
.hInstance = App.hInstance
.lpstrFilter = Replace$(Filter$, "|", Chr$(0)) & Chr$(0)
.nFilterIndex = FilterIDX
.lpstrFile = DefFile$ & String$(257 - Len(DefFile$), 0)
.nMaxFile = Len(.lpstrFile) - 1
.lpstrFileTitle = .lpstrFile
.nMaxFileTitle = .nMaxFile
.lpstrDefExt = DefExt$ & Chr$(0)
.lpstrInitialDir = IIf(Len(DefPath$), DefPath$, CurDir$) & Chr$(0)
.lpstrTitle = Title$ & Chr$(0)
If FileMode = fdmSaveFile Or FileMode = fdmSaveFileNoConfirm Then
.Flags = OFS_FILE_SAVE_FLAGS
If FileMode = fdmSaveFile Then .Flags = .Flags Or OFN_OVERWRITEPROMPT
R = GetSaveFileName(OFN)
Else
.Flags = OFS_FILE_OPEN_FLAGS
If FileMode = fdmOpenFileOrPrompt Then .Flags = .Flags Or OFN_CREATEPROMPT
R = GetOpenFileName(OFN)
End If
If R Then
SP = InStr(.lpstrFile, Chr$(0))
If SP Then .lpstrFile = Left$(.lpstrFile, SP - 1)
SelectFile = Trim$(Replace$(.lpstrFile, Chr$(0), ""))
Else
Z = CommDlgExtendedError()
If Z Then MsgBox "Unable to get filename(s)." & vbCr & vbCr & "CommDlgExtendedError returned " & Z, vbCritical
End If
End With
End Function

CNer 2001-11-18
  • 打赏
  • 举报
回复
我是想用“引用”不是要使用“控件”啊。
foxruo 2001-11-15
  • 打赏
  • 举报
回复
用CommonDialog控件。
三个光 2001-11-15
  • 打赏
  • 举报
回复
"部件"里的隐藏部件:"Microsoft Common Dialog Control 6.0"是你要的吗?
调用它的ShowOpen方法可以打开系统默认的对话框

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧