没人能搞定它吗?shbrowseforfolder函数?

bottom 2003-07-10 07:06:49
没人能搞定它吗?shbrowseforfolder函数?

uses shlobj;

function SelectDirectory(handle:hwnd;const Caption: string; const Root: WideString;out Directory: string): Boolean;
var
lpbi:_browseinfo;
buf:array [0..MAX_PATH] of char;
id:ishellfolder;
eaten,att:cardinal;
rt:pitemidlist;
initdir:pwidechar;
begin
result:=false;
lpbi.hwndOwner:=handle;
lpbi.lpfn:=nil;
lpbi.lpszTitle:=pchar(caption);
lpbi.ulFlags:=BIF_RETURNONLYFSDIRS+64;
SHGetDesktopFolder(id);
initdir:=pwchar(root);
id.ParseDisplayName(0,nil,initdir,eaten,rt,att);
lpbi.pidlRoot:=rt;
getmem(lpbi.pszDisplayName,MAX_PATH);
try
result:=shgetpathfromidlist(shbrowseforfolder(lpbi),buf);
except
freemem(lpbi.pszDisplayName);
end;
if result then directory:=buf;
end;

这段是不错,但不完美:毛病在于lpbi.pidlRoot:=rt;
运行后显示 效果是目录浏览框中只有

这个当前目录,如图http://www.bwkj.net/ddiscussion/current.jpg

而我想要的是如BORLAND的效果如图:他既能显示完整路径

又能记住上一次的路径!

http://www.bwkj.net/ddiscussion/whole.jpg

请问该如何修改这段代码才能有BORLAND的效果
...全文
49 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bottom 2003-07-11
  • 打赏
  • 举报
回复
回调函数,我还不熟悉
怎么写啊!
terrace 2003-07-10
  • 打赏
  • 举报
回复
用回调函数处理初始化消息BFFM_SETSELECTION.

1,184

社区成员

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

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