请问一个vb中使用的一个API函数:SHBrowseForFolder。在BCB中怎么使用。我要实现选择目录的功能。

lihongxing2002 2003-09-18 07:04:30
同上。
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
binbin 2003-09-18
  • 打赏
  • 举报
回复
更简单的做法:
使用BCB中的SelectDirectory函数,注意要#include<FileCtrl.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Path;
SelectDirectory("Select","\\",Path);
ShowMessage(Path);
}
binbin 2003-09-18
  • 打赏
  • 举报
回复
要包含shlobj.h文件,注意该文件与vcl.h中的定义冲突,需要加上:
#define NO_WIN32_LEAN_AND_MEAN
在#include <vcl.h>前面
或者修改shlobj.h中冲突的结构名.
binbin 2003-09-18
  • 打赏
  • 举报
回复
void _SHFree(void *p)
{
IMalloc *pm;
SHGetMalloc(&pm);
if (pm)
{
pm->Free(p);
pm->Release();
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BROWSEINFO bi;
LPITEMIDLIST pidl;
char ach[MAX_PATH];

bi.hwndOwner = Handle;
bi.pidlRoot = NULL;
bi.pszDisplayName = ach;
bi.lpszTitle = NULL;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

pidl = SHBrowseForFolder(&bi);

if (pidl)
{
SHGetPathFromIDList(pidl, ach);
Caption=ach;//把标题栏设为选择的目录名
_SHFree(pidl);//调用上面的自定义函数释放Item标识,网上很多BCB程序范例没有做这一步
}
}

1,222

社区成员

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

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