//选择文件
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. hdu acmsteps 2.1.8 Leftmost Digit

    Leftmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  2. MyEclipse------文件字符输入,输出流读写信息

    other.jsp <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  3. TEXT宏,TCHAR类型

    TCHAR *ptch = TEXT("This is a const string."); 如果使用UNICODE字符集, 则TEXT("This is a const ...

  4. 删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法

    删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-03-25   “共执行 41 个查询,用时 2 ...

  5. 浏览器的中的 XMLHttpRequest 对象的使用

    使用XMLHttpRequest浏览器对象(IE5.IE6中是ActiveXObject对象)可以实现异步请求,Ajax就是以此为基础进行的封装. 1.同步与异步: <script type=& ...

  6. PRML Chapter 1. Introduction

    PRML Chapter 1. Introduction 为了防止忘记,要把每章的重要内容都记下来,从第一章开始 2012@3@28 今天又回去稍微翻了一下第一章内容,发现第一次看的时候没有看透,每次 ...

  7. JS 瀑布流布局

    瀑布流布局 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  8. dao、domain、service、web、vo、Model这些层的功能是什么

    这些层次都是用来管理不同的代码,让代码具有更好的维护性.开发中一般采用三层架构即MVC的模式来进行开发,M:代表model,可以理解为javaBean:V:代表view,可以理解为jsp:c:代表co ...

  9. c++ 的vector

    使用例子:std::vector<std::string> xmlNodeList; 下面介绍-- vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组 ...

  10. alipay iOS SDK

    我也是醉了,进支付宝主页找都找不到,好不容易找到赶紧记下来:https://b.alipay.com/order/productDetail.htm?productId=201308060460965 ...