_findnext,_finddata_t, _tfindfirst, _wfindnext在64位系统操作失败

复制代码
void GetFiles(std::string path, std::vector<std::string>& files) {
  // 文件句柄
  long hFile = 0;
  // 文件信息
  struct _finddata_t fileinfo;
  std::string p;
  if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1) {
    do {
      
        std::cout << "the path is " << path << std::endl;
      if((fileinfo.attrib &  _A_SUBDIR)) {
        if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
          GetFiles(p.assign(path).append("\\").append(fileinfo.name), files);
      }
      else {
        files.push_back(p.assign(path).append("\\").append(fileinfo.name));
      }
    } while (_findnext(hFile, &fileinfo) == 0);
    _findclose(hFile);
  }
}
复制代码

这里的long hFile不对,需要写成intptr_t hFile

复制代码
intptr_t  handle=_tfindfirst(_T("*.*"),&fileinfo);
    if(handle!=-1)
        done=0;
    while(!done)
    {
        if(fileinfo.attrib&_A_SUBDIR&&
            _tcscmp(fileinfo.name,_T("."))&&_tcscmp(fileinfo.name,_T("..")))
        {
            TreeCtrlItem.hParent=hTreeItemRoot;
            TreeCtrlItem.hInsertAfter=TVI_LAST;
            TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
            TreeCtrlItem.item.pszText=fileinfo.name;
            TreeCtrlItem.item.iImage=0;          
            TreeCtrlItem.item.iSelectedImage=0;  
            m_Tree.InsertItem(&TreeCtrlItem);
        }
        done=_wfindnext(handle,&fileinfo);
    }
复制代码

这里的long handle不对,需要写成intptr_t handle

posted @   unicornsir  阅读(258)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示