//选择文件
CFileDialog dlg(TRUE, 0, 0, OFN_HIDEREADONLY, "文本文件|*.txt|所有文件|*.*)||",0);
if (dlg.DoModal())
{
 CString filePath=dlg.GetPathName();
 CString fileNameWithNoExt=dlg.GetFileTitle();
}

//选择文件夹版本1

void CMyTestDlg::OnBnClickedButton1()
{
 TCHAR chPath[255]; //用来存储路径的字符串
 CString strPath;
 BROWSEINFO bInfo;
 GetModuleFileName(NULL,chPath,MAX_PATH);
 strPath             =chPath;
 ZeroMemory(&bInfo, sizeof(bInfo));
 bInfo.hwndOwner     = m_hWnd;
 bInfo.lpszTitle     = _T("请选择路径: ");
 bInfo.ulFlags       = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
 //bInfo.lpfn          = BrowseCallbackProc;
 bInfo.lParam        = (LPARAM)strPath.GetBuffer(strPath.GetLength());
 LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
 lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
 if(lpDlist != NULL) //用户按了确定按钮
 {
  SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
  strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
  ((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowText(strPath);
 }
}

//选择文件夹版本2
bool GetFolder(CString& folderpath, CString lastSelectedDir, const char* szCaption = NULL, HWND hOwner = NULL)
{
 bool retVal = false;
 // The BROWSEINFO struct tells the shell
 // how it should display the dialog.
 BROWSEINFO bi;
 memset(&bi, 0, sizeof(bi));
 bi.ulFlags   = BIF_USENEWUI;
 bi.hwndOwner = hOwner;
 bi.lpszTitle = szCaption;
 bi.lpfn=initSelectedDirProc;
 bi.lParam=(LPARAM)(LPCTSTR)lastSelectedDir;
 // must call this if using BIF_USENEWUI
 ::OleInitialize(NULL);
 // Show the dialog and get the itemIDList for the selected folder.
 LPITEMIDLIST pIDL = ::SHBrowseForFolder(&bi);
 if(pIDL != NULL)
 {
  // Create a buffer to store the path, then get the path.
  char buffer[_MAX_PATH] = {'\0'};
  if(::SHGetPathFromIDList(pIDL, buffer) != 0)
  {
    // Set the string value.
    folderpath = buffer;
    retVal = true;
  } 
  // free the item id list
  CoTaskMemFree(pIDL);
 }
 ::OleUninitialize();
 return retVal;
}

MFC 选择一个文件或者文件夹路径的更多相关文章

  1. Python遍历文件个文件夹

    在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...

  2. MFC 使用MFC EditBrowse Control控件选择文件或者文件夹

    从工具箱中拖拽一个MFC EditBrowse Control到窗体中, 通过设置“Browse Mode”属性指定“文件浏览”还是“文件夹浏览” 可以通过添加对象的方式将其与一个CString se ...

  3. MFC获取文件路径和文件夹路径

    MFC的界面中,需要实现这样两个功能: 1.在界面上加一个按钮,单击按钮弹出一个对话框选择文件,在工程中获得文件的路径: 2.在界面上加一个按钮,单击按钮弹出一个对话框选择文件夹,在工程中获取文件夹的 ...

  4. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径

    java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...

  5. VB6 选择文件夹路径

    '--------------------------------------------------------------------------------------- ' Module : ...

  6. MFC 中 删除一个非空文件夹

    MFC中提供了删除文件夹的一个封装函数 RemoveDirectory(LPCTSTR lpPathName),我们只要把要删除的文件夹的路径传进去就可以删除了,貌似一切如此简单.我象征性的建立一个文 ...

  7. Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

    这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException ...

  8. MFC选择文件(夹)按钮实现

    MFC选择文件(夹)按钮实现 选择文件(夹) void CFileSelectDlg::OnBnClickedButtonSelect() { if(((CButton*)(GetDlgItem(ID ...

  9. Java 递归获取一个路径下的所有文件,文件夹名称

    package com.readfile; import java.io.File; public class GetAllFiles { public static void main(String ...

随机推荐

  1. BZOJ1113 海报PLA

    好像是很古老的题?现在BZOJ上找不到该题,所以没有提交. 1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 8 ...

  2. debian , ubuntu 截取下拉菜单

    普通情况下print键很好用的,但是,截下拉菜单的时候,就怎么按都没反应了...然后换了shutter也不行,只能在静态界面截图.所以...然后就有了下面方法. 如果不是gnome怎么办?这个担心显然 ...

  3. udp 内网穿透 互发消息

    还差实现内网终端,向服务器发送请求,要对方的内网连接自己,实现打洞.在同一网段,或者公网运行,可以相互聊天. 没有实现检测客户端下线功能. 1,服务器代码 package router; import ...

  4. android HDMI 清晰度 分辨率

    但改变分辨率时,发送广播即可: Intent intent_outputmode_change = new Intent(ACTION_OUTPUTMODE_CHANGE);     intent_o ...

  5. linux内存回收 内核参数

    ss -atu| awk '/^tcp/{++S[$2]} END {for(a in S) print a,S[a]}' ps up pid (RSS:实际内存大小,长驻内存) ps o pid,c ...

  6. jQuery返回顶部(精简版)

    jQuery返回顶部(精简版) <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  7. soa vs cop

    soa强调分层:底层为高层提供服务: cop强调分块:有明确的职责和服务提供接口,为外部提供服务. SOA 原则非常强调将服务使用者和服务提供者分离开来,关于此类分离实际的含义,有很多不正式但非常有用 ...

  8. tp框架表单验证

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  9. UVa OJ 140 - Bandwidth (带宽)

    Time limit: 3.000 seconds限时3.000秒 Problem问题 Given a graph (V,E) where V is a set of nodes and E is a ...

  10. Java,PostgreSQL时间范围查询

    遇到一坑:对于如下代码 select * from order_mileagefuel where date > '2015-11-1' and date< '2015-11-5' 在Po ...