procedure Tfeditlink.SpeedButton4Click(Sender: TObject);
var
ppidl: PITEMIDLIST;
bi: BROWSEINFO;
ret: Array[0..MAX_PATH - 1] of Char;
begin
SHGetSpecialFolderLocation(
application.Handle,
CSIDL_NETWORK,
ppidl);
bi.hwndOwner := Handle;
bi.pidlRoot := ppidl;
bi.pszDisplayName := ret;
bi.lpszTitle := '选择计算机名称:';
bi.ulFlags := BIF_BROWSEFORCOMPUTER ;
bi.lpfn := nil;
SHBrowseForfolder(bi);
sname.text:=ret;
end;************
* 努力学习 *
*   全为   *
*¥人民币¥*
************

解决方案 »

  1.   

    请问SHBrowseForfolder()是哪个单元文件中的函数?我该引用哪个单元?
      

  2.   

    我搜索了,SHLOBJ。H中有定义,但它认不到??我再看看
      

  3.   

    开始的问题是,因为C++BUILDER 认大小写和DELPHI中的差异认不到函数名称。
    现在程序编译停止在SHBrowseForFolder(bi)处,出错信息
    [C++ Error] Unitdir.cpp(41): E2034 Cannot convert '_browseinfoA' to '_browseinfoA *'
    [C++ Error] Unitdir.cpp(41): E2342 Type mismatch in parameter 'lpbi' (wanted '_browseinfoA *', got '_browseinfoA')
    这是什么意思?现在代码为
        LPITEMIDLIST  DesktopPidl;
        BROWSEINFO bi;
        char DesktopDir[MAX_PATH];
        int nFolder;
        nFolder = CSIDL_NETWORK;
        SHGetSpecialFolderLocation(Application ->Handle,nFolder,&DesktopPidl);
        bi.hwndOwner = Handle;
        bi.pidlRoot = DesktopPidl;
        bi.pszDisplayName = DesktopDir;
        bi.lpszTitle = "选择数据库服务器名称:";
        bi.ulFlags = BIF_BROWSEFORCOMPUTER ;
        bi.lpfn = NULL;
        SHBrowseForFolder(bi);  <------出错
        Edit1 ->Text =DesktopDir;