我喜欢用API函数,看你喜欢不喜欢 Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Const OFN_HIDEREADONLY = &H4 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 Public Function CommonOpenFile(ByVal hWndParent As Long, ByVal Filter As String, ByVal InitDir As String, ByVal Title As String) As String Dim OFName As OPENFILENAME Dim Tam As Long
OFName.lStructSize = Len(OFName) OFName.hwndOwner = hWndParent OFName.hInstance = App.hInstance OFName.lpstrFilter = Filter OFName.lpstrFile = Space$(254) OFName.nMaxFile = 255 OFName.lpstrFileTitle = Space$(254) OFName.nMaxFileTitle = 255 'OFName.lpstrInitialDir = InitDir OFName.lpstrTitle = Title OFName.flags = OFN_HIDEREADONLY If GetOpenFileName(OFName) Then OFName.lpstrFile = Trim(OFName.lpstrFile) Tam = Len(OFName.lpstrFile) CommonOpenFile = Mid(OFName.lpstrFile, 1, Tam - 1) 'cut char 0 Else CommonOpenFile = "" End If End Function调用形式 Private Sub open_Click() On Error Resume Next Dim FileName As String FileName = CommonOpenFile(Me.hWnd, "", App.Path, "Open") If FileName <> "" Then Picture1(0).Picture = LoadPicture(FileName)
End IfEnd Sub 如果是保存的话把上面的getopenfilename函数改为GetSaveFileName Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
行 31: 控件 CommonDialog1 的类 MSComDlg.CommonDialog 不是一个已加载的控件类。怎么解决呀?重新安装VB吗!
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Const OFN_HIDEREADONLY = &H4
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
Public Function CommonOpenFile(ByVal hWndParent As Long, ByVal Filter As String, ByVal InitDir As String, ByVal Title As String) As String
Dim OFName As OPENFILENAME
Dim Tam As Long
OFName.lStructSize = Len(OFName)
OFName.hwndOwner = hWndParent
OFName.hInstance = App.hInstance
OFName.lpstrFilter = Filter
OFName.lpstrFile = Space$(254)
OFName.nMaxFile = 255
OFName.lpstrFileTitle = Space$(254)
OFName.nMaxFileTitle = 255
'OFName.lpstrInitialDir = InitDir
OFName.lpstrTitle = Title
OFName.flags = OFN_HIDEREADONLY
If GetOpenFileName(OFName) Then
OFName.lpstrFile = Trim(OFName.lpstrFile)
Tam = Len(OFName.lpstrFile)
CommonOpenFile = Mid(OFName.lpstrFile, 1, Tam - 1) 'cut char 0
Else
CommonOpenFile = ""
End If
End Function调用形式
Private Sub open_Click()
On Error Resume Next
Dim FileName As String
FileName = CommonOpenFile(Me.hWnd, "", App.Path, "Open")
If FileName <> "" Then
Picture1(0).Picture = LoadPicture(FileName)
End IfEnd Sub
如果是保存的话把上面的getopenfilename函数改为GetSaveFileName
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long