_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 @ 2020-05-26 12:08  unicornsir  阅读(277)  评论(0)    收藏  举报