13,873
社区成员
发帖
与我相关
我的任务
分享
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
const int SELDIRHELP = 1000;
String Dir = "D:\\Documents";
if (SelectDirectory(Dir, TSelectDirOpts() << sdAllowCreate
<< sdPerformCreate << sdPrompt,SELDIRHELP))
if(!Dir.IsEmpty())
Edit1->Text = Dir;
}

SelectDirectory函示中文界面只有自己重做吗?
SelectDirectory是CB的东西,不是windows的,你的CB是英文版,它应该就是英文界面。至于显示中文字,你让CB去哪里弄中文字?

void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
String AppPath;
if(pidl != nullptr)
{
SHGetPathFromIDList(pidl, AppPath.c_str());
Application->MessageBox(AppPath.c_str(), L"浏览文件夹", MB_OK);
if(SUCCEEDED(SHGetMalloc(&pMalloc)))
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
else
Application->MessageBox(L"选择为空", L"浏览文件夹", MB_OK);
}
SelectDirectory有另一个重载的函数,参数不同,你试试那个。
SHBrowseForFolder