VC 选择文件路径窗口

界面样式 : [文件路径文本框] + [浏览按钮]

相应事件 : 

// 浏览
void DecSendData::OnBnClickedBtnScan()
{
    // TODO: 在此添加控件通知处理程序代码
    CString szPath = GetDirectoryPathA();
    if (szPath != "")
    {
        szDecSendDataPath = szPath;
        UpdateData(FALSE);
    }
}

内部函数 : 

// 获取选择的路径
CString DecSendData::GetDirectoryPathA()
{
    LPITEMIDLIST pidlRoot=NULL;
    SHGetSpecialFolderLocation(m_hWnd,CSIDL_DRIVES,&pidlRoot);
    BROWSEINFO bi;   //the input parameters needed
    CString strDisplayName;  
    bi.hwndOwner=GetSafeHwnd();   //get handle value of parent window 
    bi.pidlRoot=pidlRoot;   
    bi.pszDisplayName=strDisplayName.GetBuffer(MAX_PATH+1);   //get buffer pointer
    char szLan[32] = {0};
    sprintf(szLan, "%s", "文件夹");
    bi.lpszTitle=szLan;   //set title
    bi.ulFlags=BIF_RETURNONLYFSDIRS;   //set flag
    bi.lpfn=NULL;
    bi.lParam=0;
    bi.iImage=0;   //The above parameters are not related to the settings, better set up,
    LPITEMIDLIST lpIDList= SHBrowseForFolder(&bi);    //open dialog
    strDisplayName.ReleaseBuffer();   //correspond to GetBuffer()
    char pPath[MAX_PATH];
    CString Str;
    if (lpIDList)
    {
        SHGetPathFromIDList (lpIDList, pPath);
        Str=pPath;
    }
    return Str;
}

转载于:https://www.cnblogs.com/xuejianhui/articles/2741149.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值