{
CString FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
} 文件名保存在了FilePathName里,然后处理吧 上面内容来自百度知道,去给amote258点个赞吧。 -------------------我是分割线---------------- 上面只是最简单的用法,那么更复杂的用法包括指定扩展名等等。下面是CFileDialog的详解: CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。
CFileDialog的语法:

CFileDialog(BOOL bOpenFileDialog,
  LPCTSTR lpszDefExt=NULL,
  LPCTSTR lpszFileName=NULL,
  DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  LPCTSTR lpszFilter=NULL,
  CWnd * pParentWnd=NULL); 

  1. 第一个参数 bOpenFileDialog为TRUE或FALSE。TRUE为打开文件;FALSE为保存文件。
  2. 第二个参数 lpszDefExt为缺省的扩展名。如果用户用户没有在文件名编辑框中输入文件扩展名,默认文件扩展名被自动附加到文件名上。如果设置为空,不附加任何扩展名。
  3. 第三个参数 lpszFileName为显示在文件名组合框的编辑框的文件名,一般可选NULL
  4. 第四个参数 dwFlags为对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隐藏只读选项和覆盖已有文件前提示。
    1. OFN_ALLOWMULTISELECT:允许选择多个文件

      OFN_CREATEPROMPT:如果输入的文件名不存在,则对话框返回询问用户是否根据次文件名创建文件的消息框

      OFN_FILEMUSTEXIST:只能输入已存在的文件名

      OFN_FORCESHOWHIDDEN:可以显示隐藏的文件

      OFN_NOREADONLYRETURN:不返回只读文件

      OFN_OVERWRITEPROMPT:保存的文件已存在时,显示文件已存在的信息

  5. 第五个参数 LpszFilter为下拉列表枢中显示文件类型。
    1. lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:

      "JPG Files (*.jpg)|*.jpg|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

  6. 第六个参数 pParentWnd为父窗口指针, 一般可选NULL。

代码示例:

void CMyDialog::OnBnClickedOpennc()
{
// TODO: 在此添加控件通知处理程序代码
CString FilePathName;
CFileDialog dlg(TRUE, //TRUE为OPEN对话框,FALSE为SAVE AS对话框
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
(LPCTSTR)_TEXT("JPG Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"),
NULL);
if(dlg.DoModal()==IDOK)
{
FilePathName=dlg.GetPathName(); //文件名保存在了FilePathName里
}
else
{
return;
}
}

以上内容参考自siriurs28,文中有修改。感谢原作者。

---------------------我还是分割线----------------

下面再补充一点获取文件名的几个函数:

CFileDialog 用于取文件名的几个成员函数:

假如选择的文件是C:\WINDOWS\TEST.exe

则:

(1)GetPathName();取文件名全称,包括完整路径。取回C:\WINDOWS\TEST.exe

(2)GetFileTitle();取文件全名:TEST.exe

(3)GetFileName();取回TEST

(4)GetFileExt();取扩展名exe

-----

更详细的内容可以参考renai2008的专栏

MFC打开文件对话框的更多相关文章

  1. MFC 打开文件对话框 打开单个文件

    CFileDialog的语法: CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,D ...

  2. MFC程序打开文件对话框出错的问题解决

    前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. ...

  3. C++ MFC打开文件的流程

    打开文件的步骤如下: 弹出打开文件对话框 -> 获取选择的文件,并将文件显示在视图中. 我们程序中经常需要定制的操作如下: 1. 定制弹出的文件对话框,例如需要修改打开文件的类型或扩展名 2. ...

  4. 打开文件对话框在xp和win7上的实现文件任意多选

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在xp系统上进行文件多选,实际上其文件字符串数组的缓冲区是有限,并不能支持选择任意多个文件,为此以前我还写过一篇文章: ...

  5. VS2012下自定义打开文件对话框

    VS2012下自定义打开文件对话框,MFC的CFileDialog封装了太多,太复杂,绕得头晕,自己封装一个得了 #pragma once #include <objbase.h> #in ...

  6. 4.使用CFileDialog打开文件对话框,获得文件路径 -windows编程

    引言:没想到2022年还有很多工业软件公司依然使用MFC,微软也一直在更新MFC的库,这次使用MFC封装的CFileDialog类,写一个获得选定文件路径,名称,扩展名的程序. 个人技术博客(文章整理 ...

  7. java中文件保存、打开文件对话框

    package com.soft.test; //AWT: FileDialog类 + FilenameFilter类 可以实现本功能 //Swing: JFileChooser类 + FileFil ...

  8. QT 打开文件对话框汇总

    Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr( ...

  9. C# OpenFileDialog打开文件对话框(详解)

    一.打开文件对话框(OpenFileDialog) 1. OpenFileDialog控件的基本属性 InitialDirectory:对话框的初始目录 Filter: 获取或设置当前文件名筛选器字符 ...

随机推荐

  1. session_start保存的客户端cookie的值什么时候改变

    //cookie记录的session_id立刻改变了session_start();echo "old:".session_id();session_regenerate_id() ...

  2. c# 修改appConfig文件节点

    配置文件对于程序的帮助是不可小视的,尤其是java工程师们,当然了,我这里说的是c#的配置文件.废话不多说了,直接上代码了,想必大家一看就会明白了 private string UpdateConfi ...

  3. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:1.资源准备

    最近,在VmwareStation 10虚拟机上,基于CentOS5.4安装Oracle 11g RAC,并把过程记录下来.刚开始时,是基于CentOS 6.4安装Oracle 11g RAC, 没有 ...

  4. ArcEngine 通过SpatialRelDescription删除不相交要素

    ISpatialFilter.SpatialRel设置为esriSpatialRelRelate,并且设置SpatialRelDescription为某个字符串.该字符串的构造方法:该字符串为长度为9 ...

  5. JAVA多线程一

    介绍 线程是操作系统的最小单位,一个进程可以创建多个线程. 线程有五种状态,分别是新建.就绪.运行.阻塞.死亡状态. 多线程可以提高执行效率,但是如果单线程可以完成的任务,使用多线程反而会增加不必要的 ...

  6. 基于opencv的手写数字识别(MFC,HOG,SVM)

    参考了秋风细雨的文章:http://blog.csdn.net/candyforever/article/details/8564746 花了点时间编写出了程序,先看看效果吧. 识别效果大概都能正确. ...

  7. Ioc注入方式写dubbo client(非set beans)

    @Autowired注解的方式注解 Spring框架中进行注入式,使用@Autowired. @Autowired可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作,这里必须明确:@Auto ...

  8. 指针数组  数组指针的区别.xml

    pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...

  9. 数往知来 AJAX Ajax增删改查<十九>

    =================================================客户端================================================ ...

  10. js获取时间搓

    var oData=new Date().getTime(2016-01-16); console.log(oData);