已知一个文件夹LPSHELLFOLDER curlpsf,想得到文件夹中所有文件的全名,用SHGetFileInfo函数的 SHGFI_DISPLAYNAME 得到只是文件显示的名称,有时候不包括后缀名,而是 SHGFI_TYPENAME 得到的是文件类型,如“文本文件”,那么如何能得到文件的全名(包括后缀名)????

解决方案 »

  1.   

    FindFolderAllFiles(CString csFolderName)
    {
      CFileFind f;
      BOOL bFind=f.FindFile(csFolderName+"\\*.*");
      while(bFind)
      {
        bFind = f.FindNextFile();
        if(f.IsDots()) continue;
        if(f.IsDirectory())
        { FindFolderAllFiles(csFolderName+"\\"+f.GetFileName()); }
        //Get File Name
        TRACE(_T("%s\r\n"),f.GetFileName());//f.GetFileName..
      }
    }
      

  2.   

    CFileDialog::GetFileName()
    CFileDialog::GetPathName()
      

  3.   

    不知对你是否有帮助:)         
             BROWSEINFO bi;
    LPITEMIDLIST pidl;// PIDL selected by user
    char pathDir[MAX_PATH];
    bi.hwndOwner=m_hWnd;
    bi.pidlRoot=NULL;
    bi.lpszTitle="浏览文件夹";
    bi.ulFlags=0;
    bi.pszDisplayName=pathDir;
    bi.lpfn=NULL;
    bi.lParam=0;
    pidl = SHBrowseForFolder(&bi);
    m_folder=" 文件夹显示名: ";
    m_folder+=pathDir;
    if (pidl != NULL) 
    {
    char Buffer[256];
    if (SHGetPathFromIDList(pidl, Buffer))
    {
    m_folder+="文件夹的全路径名: ";
    m_folder+=Buffer;
    }
    GlobalFree(pidl);

    UpdateData(false);