MFC拖拽、选择目录、遍历文件

1.选择目录

void CDecryptFileDlg::OnBnClickedSel()
{
    std::wstring selectedDir;
    WCHAR szDir[MAX_PATH];     
    ZeroMemory(szDir, sizeof(szDir));     
    BROWSEINFO bi;     
    bi.hwndOwner = m_hWnd;     
    bi.pidlRoot = NULL;     
    bi.pszDisplayName = szDir;     
    bi.lpszTitle = L"请选择目录:"; bi.ulFlags = 0; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; //选择目录 LPITEMIDLIST lp = SHBrowseForFolder(&bi); if(lp && SHGetPathFromIDList(lp, szDir)) { selectedDir = szDir; selectedDir += L"\\"; } SetDlgItemText(IDC_PATH, selectedDir.c_str()); }

2.拖拽文件

void CDecryptFileDlg::OnDropFiles(HDROP hDropInfo)
{
    int DropCount = DragQueryFile(hDropInfo, -1, NULL, 0);  
    for(int i = 0; i < DropCount; i++)  
    {  
        WCHAR wcStr[MAX_PATH];  
        DragQueryFile(hDropInfo, i, wcStr, MAX_PATH);
                //字符串拼接请自行处理  
        SetDlgItemText(IDC_PATH, wcStr);
    }   
    DragFinish(hDropInfo);
}    

3.遍历文件夹

void CDecryptFileDlg::BrowseCurrentAllFile(wstring strDir)
{
    if(strDir.empty())
    {
        return;
    }
    else
    {
        if(strDir[strDir.length()-1] != L'\\')
        {
            strDir += L"\\"; } strDir = strDir + L"*.*"; } CFileFind finder; wstring strPath; BOOL bWorking = finder.FindFile(strDir.c_str()); while(bWorking) { bWorking = finder.FindNextFile(); strPath = finder.GetFilePath(); if(finder.IsDirectory() && !finder.IsDots()) { BrowseCurrentAllFile(strPath); //递归调用  } else if(!finder.IsDirectory() && !finder.IsDots()) { //strPaht就是所要获取的文件路径  DecryptFile(strPath); } } }

 

转载于:https://www.cnblogs.com/anow/p/7650371.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值