cad vba 打开文件对话框_如何调用API函数打开文件保存对话框和文件打开对话框,返回文件路径???...

'打开文件对话框结构

Public 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 Const DLG_SHOWOPEN = 1

Private Const DLG_SHOWSAVE = 2

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 Function GetDlgRtnFileName(ByVal iAction As Integer, vOpenFile As OPENFILENAME, ByVal hWndOw As Long, ByVal sFilter As String, _

ByVal sTitle As String, ByVal DefExt As String, ByVal InitFileName As String) As String '用API函数获得打开对话框和保存对话框返回的文件名

Dim lReturn As Long

vOpenFile.lStructSize = Len(vOpenFile)

vOpenFile.hwndOwner = ThisDrawing.HWND32 ' hWndOw 'Form1.hwnd

'         vOpenFile.hInstance = app.hInstance

vOpenFile.lpstrFilter = sFilter

vOpenFile.nFilterIndex = 1

If iAction = 2 Then

vOpenFile.lpstrFile = InitFileName & String((257 - Len(InitFileName)), 0)

Else

vOpenFile.lpstrFile = String(257, 0)

End If

vOpenFile.nMaxFile = Len(vOpenFile.lpstrFile) - 1

vOpenFile.lpstrFileTitle = vOpenFile.lpstrFile

vOpenFile.nMaxFileTitle = vOpenFile.nMaxFile

vOpenFile.lpstrInitialDir = ThisDrawing.Path '& "\"

vOpenFile.lpstrTitle = sTitle '"使用对话框API而不是控件" '"Use the Comdlg API not the OCX"

vOpenFile.Flags = 2

vOpenFile.lpstrDefExt = DefExt

Select Case iAction

Case DLG_SHOWOPEN

lReturn = GetOpenFileName(vOpenFile)

Case DLG_SHOWSAVE

lReturn = GetSaveFileName(vOpenFile)

Case Else   'unknown action

Exit Function

End Select

If lReturn = 0 Then

GetDlgRtnFileName = "Cancel" 'MsgBox "用户按下Cancel按钮" '"The User pressed the Cancel Button"

Else

GetDlgRtnFileName = Trim(Left(vOpenFile.lpstrFile, InStr(1, vOpenFile.lpstrFile, Chr$(0), vbBinaryCompare) - 1))

End If

End Function

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值