[原创]在浏览文件夹时指定初始目录

ken98091 2003-11-24 09:10:22
'大家对怎样调用浏览文件夹这个API可能都会用,
'但可能对于如何指定初始目录则可能无从下手了
'以下是本人的一点心得,希望大家会用的着
'以下在窗体,因为本例用到了addressof运算符,请注意存盘
'--------------------------------------------------
'鬼龙之舞
'------------------------------------------------
Option Explicit
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" (ByRef lpbi As BROWSEINFO) As Long
Private Const BIF_RETURNONLYFSDIRS = &H1

Private Sub FORM_Load()
Dim bi As BROWSEINFO
bi.pidlRoot = 0
bi.ulFlags = BIF_RETURNONLYFSDIRS
bi.lpfn = GetProc(AddressOf BrowseCallbackProc)
SHBrowseForFolder bi
End Sub

'以下在模块,把初始目录设为c:\windows\system
'添加模块:[工程]-[添加模块]


Option Explicit

Private Const BFFM_INITIALIZED = 1
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_USER = &H400
Private Const BFFM_SETSELECTIONA = (WM_USER + 102)

Public Function BrowseCallbackProc(ByVal hDlg As Long, ByVal uMsg As Long, ByVal lParam As Long, ByVal lpData As Long) As Long
If uMsg = BFFM_INITIALIZED Then '对话框初始化时设置目录
SendMessage hDlg, BFFM_SETSELECTIONA, 1, ByVal "c:\windows\system"
End If
BrowseCallbackProc = 1
End Function
Public Function GetProc(ByVal Proc As Long) As Long
GetProc = Proc
End Function
...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hisofty 2004-02-13
  • 打赏
  • 举报
回复
还有不少以bffm_开头的消息
hkhsd 2004-02-13
  • 打赏
  • 举报
回复
好东西,虽然看不太懂,但能用。

1,486

社区成员

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

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