先用CFileDialog后再用CFileFind则无法找到文件

本文探讨了使用CFileDialog组件选择文件后对当前目录的影响,并提供了解决方案,确保后续文件查找功能正常工作。

转自CSDN:

按钮1的代码

    CFileDialog fileDlg (TRUE) ;
    fileDlg.m_ofn.lpstrTitle = "读入文本" ;
    fileDlg.m_ofn.lpstrFilter = "文本文档(*.txt)\0*.txt\0\0" ;
 
    if (IDOK == fileDlg.DoModal ())
    {
        m_otherPath = fileDlg.GetPathName () ; // 获得全部的路径
    }
按钮2的代码:

    CFileFind finder ;
    CString FilePath ;
    CString FileName ;
     
    BOOL bWorking = finder.FindFile (".\\buildloc\\*.txt") ;  // 查找文件夹下的文件
    while (bWorking) // 当找到了
    {
        bWorking = finder.FindNextFile () ;
        FileName = finder.GetFileName () ;
        FilePath = finder.GetFilePath () ;
    }       

先执行1再执行2,发现2无法找到文件,反过来先执行2再执行1,正常。

原因:调用CFileDialog之后,当前目录被更改,此时再用相对路径搜索无效;

解决:

1.在初始化fileDlg时没将style设置成OFN_NOCHANGEDIR;

2.在win 2000,win XP下,上述标志设置无效,调用

::SetCurrentDirectory((LPCTSTR)currPath);

将其修改为先前值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值