none
在VC中如何获得文件夹的路径及其名称?? RRS feed

  • 问题

  • 我打算在对话框中的一个命令按钮的事件中,打开一个文件对话框,让用户选择存储要生成的文件的路径,但是要生成的文件的名称是由程序自动控制的,不需要用户来命名,用户只需要指定要存储的路径即可,如何获得用户指定的存储路径??请指教,谢谢!!!

    2008年3月31日 7:17

答案

  • 获取目录的函数代码如下:

     

    BOOL GetDirPath(HWND hwndOwner, CString* pDir)
    {
     BROWSEINFO lpbi;

     TCHAR lpDir[MAX_PATH];
     CString path("");

     lpbi.hwndOwner = hwndOwner;
     lpbi.pidlRoot = NULL;  // 默认路径
     lpbi.pszDisplayName = lpDir;
     lpbi.lpszTitle = _T("请选择文件夹:");
     lpbi.ulFlags = BIF_NEWDIALOGSTYLE;
     lpbi.lpfn = NULL;
     lpbi.lParam = NULL;
     lpbi.iImage = NULL;

     LPITEMIDLIST lpidl = :: SHBrowseForFolder(&lpbi);

     if(lpidl)
      if (SHGetPathFromIDList(lpidl, lpDir))
      {
       *pDir = lpDir;
       return true;
      }

     return false;
    }

     

    调用方法举例:

     CString sDir;
     BOOL b = GetDirPath(this->m_hWnd, &sDir);

     if (b) ::MessageBox(NULL, sDir.GetBuffer(), _T("Sample"), NULL);
     

    2008年4月6日 2:23