CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );参数意义如下:

  • bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
  • lpszDefExt 指定默认的文件扩展名。
  • lpszFileName 指定默认的文件名。
  • dwFlags 指明一些特定风格。
  • lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:
    "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
  • pParentWnd 为父窗口指针。

创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:

  • CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:/test/test1.txt
  • CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt
  • CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt
  • CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1
  • POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
  • CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。

[一些小心得]

例:
CFileDialog GetFile(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,"Microsoft Excel(*.xls)|*.xls|All Files(*.*)|*.*||");

CFileDialog GetFile(打开文件对话框(TRUE),扩展名(NULL),文件名(NULL),风格-文件必须存在(OFN_FILEMUSTEXIST),查看文件类型-EXCEL文件,所有文件(Microsoft Excel(*.xls)|*.xls|All Files(*.*)|*.*||);

风格的宏定义

#define OFN_READONLY                 0x00000001
#define OFN_OVERWRITEPROMPT          0x00000002
#define OFN_HIDEREADONLY             0x00000004
#define OFN_NOCHANGEDIR              0x00000008
#define OFN_SHOWHELP                 0x00000010
#define OFN_ENABLEHOOK               0x00000020
#define OFN_ENABLETEMPLATE           0x00000040
#define OFN_ENABLETEMPLATEHANDLE     0x00000080
#define OFN_NOVALIDATE               0x00000100
#define OFN_ALLOWMULTISELECT         0x00000200
#define OFN_EXTENSIONDIFFERENT       0x00000400
#define OFN_PATHMUSTEXIST            0x00000800
#define OFN_FILEMUSTEXIST            0x00001000
#define OFN_CREATEPROMPT             0x00002000
#define OFN_SHAREAWARE               0x00004000
#define OFN_NOREADONLYRETURN         0x00008000
#define OFN_NOTESTFILECREATE         0x00010000
#define OFN_NONETWORKBUTTON          0x00020000
#define OFN_NOLONGNAMES              0x00040000     // force no long names for 4.x modules
#if(WINVER >= 0x0400)
#define OFN_EXPLORER                 0x00080000     // new look commdlg
#define OFN_NODEREFERENCELINKS       0x00100000
#define OFN_LONGNAMES                0x00200000     // force long names for 3.x modules
#define OFN_ENABLEINCLUDENOTIFY      0x00400000     // send include message to callback
#define OFN_ENABLESIZING             0x00800000
#endif /* WINVER >= 0x0400 */
#if (_WIN32_WINNT >= 0x0500)
#define OFN_DONTADDTORECENT          0x02000000
#define OFN_FORCESHOWHIDDEN          0x10000000    // Show All files including System and hidden files
#endif // (_WIN32_WINNT >= 0x0500)

需要注意的是,用了CFileDialog之后,会把程序的当前路径设置成选中文件的路径
所以,如果程序里有用到IO访问或者数据库访问之类的本地操作时,需要注意你的当前路径
用相对路径的话就不是原来你的程序路径了,切记!

CFileDialog 和 CFileDialog构造函数相关推荐

  1. MFC CFileDialog使用整理

    MFC CFileDialog使用整理 1.CFileDialog构造函数 CFileDialog:CFileDialog(BOOL     bOpenFileDialog,  LPCTSTR     ...

  2. MFC中的文件对话框类CFileDialog详解

    目录 文件对话框的分类 文件对话框类CFileDialog 对话框选项常用属性(实例:dialog) 对话框常用方法 文件对话框实例 文件对话框的分类       文件对话框分为打开文件对话框和保存文 ...

  3. cfiledialog对话框大小_CFileDialog详解

    1.CFileDialog构造函数 1 CFileDialog:CFileDialog(BOOL bOpenFileDialog,2 LPCTSTR lpszDefExt=NULL,3 LPCTSTR ...

  4. 【MFC】文件选择框——CFileDialog类

    01.目录 目录 01.目录 02.CFileDialog类 03.重要函数 & 多文件实例 04.CFileDialog注意事项 05.三个栗子 06.小结 02.CFileDialog类 ...

  5. VS2010/MFC编程入门之十七(对话框:文件对话框)

    上一讲鸡啄米介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类       文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见 ...

  6. 工作总结:文件对话框的分类(C++)

    原文地址:http://www.jizhuomi.com/software/173.html 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框.例如 ...

  7. MFC 最详细入门教程

    From:https://blog.csdn.net/wang18323834864/article/details/78621633/ Visual Studio 2019:https://visu ...

  8. VS2010MFC编程入门

    一.MFC编程入门教程之目录 第1部分:MFC编程入门教程之目录 1.MFC编程入门之前言 鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了 ...

  9. 简单的Windows程序设计

    目录 1 创建图形界面应用 2 VC++数据类型 3 UNICODE字符集 4 MFC对话框应用程序 5 Windows 控件 6 消息驱动与消息映射 7 使用控件变量访问控制控件 8 用户自定义消息 ...

最新文章

  1. IDA+GDB远程调试android平台 - Aarch64- elf64程序
  2. 【CyberSecurityLearning 43】安装并启用telnet、SSH服务应用(★)
  3. 【Ubuntu】通过虚拟机安装系统( ubuntu )
  4. Nginx 反向代理时获取用户的真实 IP
  5. linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
  6. Python批量提取Excel文件中的图片
  7. ORACLE集群日志收集,【RAC】Oracle RAC集群环境下日志文件结构
  8. (二)Luence——代码实现索引及搜索
  9. Native Instruments Maschine 2 Factory Library Mac(预置音色库)
  10. oj系统 的c语言答案,宁波大学OJ系统前105道C语言题目及答案精讲
  11. DHT11修改stm32引脚的笔记
  12. 香橙派python编程_香橙派4B Python3.7安装OpenCV
  13. 数据库与开源编译器框架LLVM
  14. 牛客网题源(JavaScript)
  15. vbs整人代码大集合(多年以来的整合)
  16. 首台微型计算机,全球首台骁龙820微型电脑:DragonBoard 820c
  17. css背景图铺满整个屏幕
  18. 大數據環境搭建,數據採集,數倉環境準備(hive on spark) 01
  19. 新站是如何做到百度秒录入
  20. 与门的Python实现

热门文章

  1. “Random“ objects should be reused解决 Random() 低效问题
  2. 设置字段默认值Java_小书MybatisPlus第9篇-常用字段默认值自动填充
  3. 插画构图的六种基本形式,小白必看!
  4. Java程序员的技术进阶成长路线
  5. 指向 类成员函数 的 函数指针
  6. 《剑指offer》刷题——【链表】从尾到头打印链表
  7. 各种数据库总结与页面传值及小技巧等杂汇
  8. 大学四年是这么度过的——大学四年总结
  9. java 函数表_C语言、Java语言的符号表区别和特点是什么?分别是如和处理函数参数的?...
  10. Latex Zotero导出格式化Bibtex条目