调用系统对话框,选择指定文件夹路径

int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
switch (uMsg)
{
case BFFM_INITIALIZED:
{
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)lpData);
}
break;
default:
break;
}
return 0;
}


BOOL CEliteTubeCut::SetAndGetSavePath(CString& foldPath)
{
TCHAR szBuffer[MAX_PATH] = { 0 };
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
CComPtr<IDispatch> swDis;
iSwApp->Frame(&swDis);
CComPtr<IFrame> swFrame;
swDis->QueryInterface(__uuidof(IFrame), (void**)&swFrame);
if (NULL == swFrame)
{
return FALSE;
}
long long hw = 0;
swFrame->GetHWndx64(&hw);


bi.hwndOwner = (HWND)hw;
bi.pszDisplayName = szBuffer;
bi.lpszTitle = _T("选择存储路径文件位置:");
bi.ulFlags = 0x0040 | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS | BIF_USENEWUI /*包含一个编辑框 用户可以手动填写路径 对话框可以调整大小之类的..;*/
| BIF_UAHINT /*带TIPS提示*/ /*| BIF_NONEWFOLDERBUTTON 不带新建文件夹按钮*/;
bi.lpfn = BrowseCallbackProc;
TCHAR sDesktopDir[_MAX_PATH]; // 当前电脑桌面路径
SHGetSpecialFolderPath(NULL, sDesktopDir, CSIDL_DESKTOP, 0);


CString strDefaultPath(sDesktopDir);
bi.lParam = (LPARAM)(LPCTSTR)(strDefaultPath);
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if (NULL == idl)
{
return FALSE;
}
SHGetPathFromIDList(idl, szBuffer);
return TRUE;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值