只返回路径,而不是文件名

解决方案 »

  1.   

    出现目录选择对话框。
    http://www.v6688.com/cxcpu/selectdir.rar
    经过测试。
    听说这个也可以,但没经测试
    选文件夹:
    CString ShowSelectDirectoryDlg(const CString & strDlgTitle)

    char szDir[MAX_PATH];
    BROWSEINFO bi;
    ITEMIDLIST *pidl; bi.hwndOwner = this->m_hWnd;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = szDir;
    bi.lpszTitle = strDlgTitle;
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage = 0; pidl = SHBrowseForFolder(&bi);
    if(pidl == NULL)
    return _T("");
    if(!SHGetPathFromIDList(pidl, szDir))
    return _T("");
    return CString(szDir);
    }
      

  2.   

    char buffer[MAX_PATH];
    BROWSEINFO m_pbi ; ::ZeroMemory(&m_pbi, sizeof(BROWSEINFO));
    m_pbi.hwndOwner = GetSafeHwnd();
    m_pbi.pszDisplayName = buffer;
    m_pbi.lpszTitle = "";
    m_pbi.ulFlags = BIF_RETURNONLYFSDIRS; ITEMIDLIST *idl = SHBrowseForFolder(&m_pbi);
    if (idl)
    {
    SHGetPathFromIDList (idl, buffer);
    }
      

  3.   

    CFileDialog Open(true/*如果为真则对话框为打开对话框,为否则为保存对话框*/, 
    "" /*默认后缀名*/, 
    "" /*默认文件名*/, 
    0 /*对话框风格*/, 
    "All File|*.*|", 
    this /*父窗口指针*/);CString strFilePath;
    if (Open.DoModal() == IDOK) //有模式地显示对话框,如果返回确定则代表有文件选择,则
    {
    strFilePath = Open.GetPathName(); //取得文件路径字符串
    SetDlgItemText (IDC_SOURCE, strFilePath); //将ID为IDC_SOURCE的控件的文本设为该字符串
    }