如何用通用对话框获取路径名呢?

middleschoolstudent 2008-03-28 08:38:18
我想用通用对话框控件获取一个带有另存为的文件名的(或者是只获取不带文件名的一个另存为路径),我想把获取的另存为路径放进一个文件框内,也就是说我想保存在哪就保存在哪,我不知道用通用对话框来做(开始我用了文件系统控件做,但效果是一样的,都不是我想要的)请高手指点,应该怎么编写这个编程呢?
谢谢.


第二个问题是:我想用progressbar控件做进度条程序,用来进行文件拷贝,从本机的一个目录拷贝到另一个目录里.
我从书上抄了个程序:
private sub command1_click
dim sfile,dfile as string
sfile="d:\test.txt"
dfile="e:\test.txt"
filecopy sfile,dfile
end sub
用这个程序可以进行文件在本机的传送(驱动器间的传送),但这个程序显示不出传送的进度.我想用progressbar控件来做.但不知道加入这个文件拷贝的程序里应该怎么写?怎么编写呢?
请高手再指点一下这个问题.把进度条加入这个程序里,应该怎么写程序呢?
请高手们依据这个小程序,指点一下.

最好是不要再另写程序了.因为本人的水平很初级.谢谢!

...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
东方之珠 2008-03-28
  • 打赏
  • 举报
回复
http://www.mndsoft.com/blog/article.asp?id=1008
东方之珠 2008-03-28
  • 打赏
  • 举报
回复
解决了,不难!
嗷嗷叫的老马 2008-03-28
  • 打赏
  • 举报
回复
关于第一个问题,不知道你要的是不是目录浏览对话框.

你把以下内容添加到一个标准模块里再调用试一下看看是不是你要的效果:

'*************************************************************************
'**模 块 名:ModBrowseFolder
'**说 明:显示目录浏览对话框
'**创 建 人:马大哈
'**日 期:2004年10月27日
'**版 本:V1.0
'*************************************************************************
Option Explicit

Private Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type

Private Const BIF_RETURNONLYFSDIRS = 1
Private Const MAX_PATH = 260

Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

Public Function BrowseForFolder(hWndOwner As Long, sPrompt As String) As String
'显示浏览目录对话框
'hWndOwner - 父窗口句柄
'sPrompt - 标题
'返回值:
' 用户所选择的目录
'备注:
' 如果用户没有选择目录 , 返回空字符串
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo

With udtBI
.hWndOwner = hWndOwner
.lpszTitle = lstrcat(sPrompt, "")
.ulFlags = BIF_RETURNONLYFSDIRS
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
lResult = SHGetPathFromIDList(lpIDList, sPath)
Call CoTaskMemFree(lpIDList)
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
End If
BrowseForFolder = sPath
End Function


在需要选路径的地方用一个变量保存BrowseForFolder的返回值就可以了:

text1.text=BrowseForFolder(me.hwnd,"请选择一个路径")

至于第二个问题,就要使用CopyFileEx这个API,然后实现CopyProgressRoutine这个回调函数.

在回调函数内就可以得到当前的复制状态.

1,066

社区成员

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

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