DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 0
在线用户: 3
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/7/13 7:39:14
标题:
shbrowseforfolder函数回调失败!怎么办? 浏览:2261
加入我的收藏
楼主: shbrowseforfolder函数回调失败!怎么办?

欲求BORLAND浏览目录的效果

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

根据CSDN上的朋友回答说要用回调函数来初始化路径

我写了,但还不太明白回调函数要怎么写,怎么用,以下代码

编译错误:[error] unit2.pas(233):Variable required

代码如下:

function MySHDPath5(mindex:longint):string;
var
  BrowseInfo: TBrowseInfo;
  DisplayName: array[0..MAX_PATH] of char;
  idBrowse,idl : PItemIDList;
  tmp : PChar;
  i:longint;
begin
Result:=';
try
Getmem(tmp, 255);
i:=sizeof(longint);
SHGetSpecialFolderLocation(application.Handle,mindex, idl);
  with BrowseInfo do
  begin
    hWndOwner:=application.Handle;
    pidlRoot:=idl;
    pszDisplayName:=DisplayName;
    lpszTitle:='目录选择';
    ulFlags:=BIF_STATUSTEXT+80;
    lpfn:=@BrowseCallbackProc(application.Handle,
              BFFM_INITIALIZED,1,i);//编译错误
    lParam:=0;
  end;
  idBrowse:=SHBrowseForFolder(BrowseInfo);
  if assigned(idBrowse) then
  Begin
     SHGetPathFromIDList(idBrowse,tmp);
     Result :=strpas(tmp);
  end;
 finally
  Freemem(tmp);
 end;
end;
function  BrowseCallbackProc(hwnd:HWND;uMsg:UINT;lp:LPARAM;pData:LPARAM ):longint;
begin
   case uMsg of
     BFFM_INITIALIZED:
       begin//1
       SendMessage(hwnd,BFFM_SETSELECTION,lp,LPARAM(shroot));

///shroot为全局变量
       end;//1
   end;
   Result:=0;
end;

 

----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行42.96875毫秒 RSS