zoukankan      html  css  js  c++  java
  • MFC 获取文件和文件夹的路径

    1.获取文件的路径

    CFileDialog fileDlg(TRUE);
    	fileDlg.m_ofn.lpstrTitle=L"打开文件";
    	//fileDlg.m_ofn.lpstrFilter=_T("Program(*.exe)*.exeAll Files(*.*)*.*");
    	if(IDOK==fileDlg.DoModal())
    	{
    		LPWSTR lpPathName = fileDlg.m_ofn.lpstrFile;
    		SetDlgItemText(IDC_EDIT_SERV_PATH,lpPathName);
    	}

    2.获取文件夹的路径

    (1)BROWSEINFO结构
    ●定义
    typedef struct_browseinfo
    {
    HWND hwndOwner;
    LPCITEMIDLIST pidlRoot;
    LPSTR pszDisplayName;
    LPCSTR lpszTitle;
    UINT ulFlags;
    BFFCALLBACK lpfn;
    LPARAM lParam;
    int iImage;
    }BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
    hwndOwner:浏览文件夹对话框的父窗体句柄。
    pidlRoot:ITEMIDLIST结构的地址,包含浏览时的初始根目录,而且只有被指定的目录和其子目录才显示在浏览文件夹对话框中。该成员变量可以是NULL,在此时桌面目录将被使用。
    pszDisplayName:用来保存用户选中的目录字符串的内存地址。该缓冲区的大小缺省是定义的MAX_PATH常量宏。
    lpszTitle:该浏览文件夹对话框的显示文本,用来提示该浏览文件夹对话框的功能、作用和目的。
    ulFlags:该标志位描述了对话框的选项。它可以为0,也可以是以下常量的任意组合:
    BIF_BROWSEFORCOMPUTER:返回计算机名。除非用户选中浏览器中的一个计算机名,否则该对话框中的“OK”按钮为灰色。
    BIF_BROWSEFORPRINTER:返回打印机名。除非选中一个打印机名,否则“OK”按钮为灰色。
    BIF_BROWSEINCLUDEFILES:浏览器将显示目录,同时也显示文件。
    BIF_DONTGOBELOWDOMAIN:在树形视窗中,不包含域名底下的网络目录结构。
    BIF_EDITBOX:浏览对话框中包含一个编辑框,在该编辑框中用户可以输入选中项的名字。
    BIF_RETURNFSANCESTORS:返回文件系统的一个节点。仅仅当选中的是有意义的节点时,“OK”按钮才可以使用。
    BIF_RETURNONLYFSDIRS:仅仅返回文件系统的目录。例如:在浏览文件夹对话框中,当选中任意一个目录时,该“OK”按钮可用,而当选中“我的电脑”或“网上邻居”等非有意义的节点时,“OK”按钮为灰色。
    BIF_STATUSTEXT:在对话框中包含一个状态区域。通过给对话框发送消息使回调函数设置状态文本。
    BIF_VALIDATE:当没有BIF_EDITBOX标志位时,该标志位被忽略。如果用户在编辑框中输入的名字非法,浏览对话框将发送BFFM_VALIDATEFAILED消息给回调函数。
    lpfn:应用程序定义的浏览对话框回调函数的地址。当对话框中的事件发生时,该对话框将调用回调函数。该参数可用为NULL。
    lParam:对话框传递给回调函数的一个参数指针
    iImage:与选中目录相关的图像。该图像将被指定为系统图像列表中的索引值。
    代码实例:
    CString m_strFileOut = _T("");
     TCHAR servPath[MAX_PATH];//用来存放文件夹路径
     BROWSEINFO bi;
     LPITEMIDLIST pidl;
     bi.hwndOwner = this->m_hWnd;
     bi.pidlRoot = NULL;
     bi.pszDisplayName = servPath;
     bi.lpszTitle = _T("选择输出文件路径");
     bi.ulFlags = BIF_RETURNONLYFSDIRS;
     bi.lpfn = NULL;
     bi.lParam = NULL;
     bi.iImage = NULL;
     if((pidl = SHBrowseForFolder(&bi)) != NULL)
     {
      if(SUCCEEDED(SHGetPathFromIDList(pidl, servPath))) //得到文件夹的全路径,不要的话,只得本文件夹名
      {
    	  SetDlgItemText(IDC_EDIT_SERV_PATH,servPath);
      }
     }



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/lovelyx/p/4867134.html
Copyright © 2011-2022 走看看