Window SubClassing另类运用(之二)[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 weizhisheng 的 blog

     shgetpathfromidlist(pidl, pchar(str));


     str := pchar(str);


     caption := str;


     cotaskmemfree(pidl);


  end;


end;


shbrowseforfolder返回一个lpitemidlist,你需要手动将它转换成一个实际的文件路径(除非你选择的是回收站和控制面板这样的虚拟路径)。最后还要用shell api把获得的pidl释放。上述代码中,browsecallback是一个自己编写的回调函数,如果不想处理回调的话,可以将它设置为nil。我还是处理了这个函数,因为我需要它的一些功能,如下:


function browsecallback(awnd:hwnd; umsg:uint; lp, lpdata:lparam):integer; stdcall;


var


  strpath : string;


  pidl : pitemidlist;


begin


  case umsg of


    bffm_selchanged:


      begin


        pidl := pitemidlist(lp);


        if pidl<>nil then begin


           setlength(strpath, max_path);


           shgetpathfromidlist(pidl, pchar(strpath));


           strpath := pchar(strpath);


           strpath := 'folder selected: ' + strpath;


本文关键:Delphi,API,Subclass
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top