CFileDialog 和 CFileDialog构造函数
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构造函数相关推荐
- MFC CFileDialog使用整理
MFC CFileDialog使用整理 1.CFileDialog构造函数 CFileDialog:CFileDialog(BOOL bOpenFileDialog, LPCTSTR ...
- MFC中的文件对话框类CFileDialog详解
目录 文件对话框的分类 文件对话框类CFileDialog 对话框选项常用属性(实例:dialog) 对话框常用方法 文件对话框实例 文件对话框的分类 文件对话框分为打开文件对话框和保存文 ...
- cfiledialog对话框大小_CFileDialog详解
1.CFileDialog构造函数 1 CFileDialog:CFileDialog(BOOL bOpenFileDialog,2 LPCTSTR lpszDefExt=NULL,3 LPCTSTR ...
- 【MFC】文件选择框——CFileDialog类
01.目录 目录 01.目录 02.CFileDialog类 03.重要函数 & 多文件实例 04.CFileDialog注意事项 05.三个栗子 06.小结 02.CFileDialog类 ...
- VS2010/MFC编程入门之十七(对话框:文件对话框)
上一讲鸡啄米介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见 ...
- 工作总结:文件对话框的分类(C++)
原文地址:http://www.jizhuomi.com/software/173.html 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框.例如 ...
- MFC 最详细入门教程
From:https://blog.csdn.net/wang18323834864/article/details/78621633/ Visual Studio 2019:https://visu ...
- VS2010MFC编程入门
一.MFC编程入门教程之目录 第1部分:MFC编程入门教程之目录 1.MFC编程入门之前言 鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了 ...
- 简单的Windows程序设计
目录 1 创建图形界面应用 2 VC++数据类型 3 UNICODE字符集 4 MFC对话框应用程序 5 Windows 控件 6 消息驱动与消息映射 7 使用控件变量访问控制控件 8 用户自定义消息 ...
最新文章
- IDA+GDB远程调试android平台 - Aarch64- elf64程序
- 【CyberSecurityLearning 43】安装并启用telnet、SSH服务应用(★)
- 【Ubuntu】通过虚拟机安装系统( ubuntu )
- Nginx 反向代理时获取用户的真实 IP
- linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
- Python批量提取Excel文件中的图片
- ORACLE集群日志收集,【RAC】Oracle RAC集群环境下日志文件结构
- (二)Luence——代码实现索引及搜索
- Native Instruments Maschine 2 Factory Library Mac(预置音色库)
- oj系统 的c语言答案,宁波大学OJ系统前105道C语言题目及答案精讲
- DHT11修改stm32引脚的笔记
- 香橙派python编程_香橙派4B Python3.7安装OpenCV
- 数据库与开源编译器框架LLVM
- 牛客网题源(JavaScript)
- vbs整人代码大集合(多年以来的整合)
- 首台微型计算机,全球首台骁龙820微型电脑:DragonBoard 820c
- css背景图铺满整个屏幕
- 大數據環境搭建,數據採集,數倉環境準備(hive on spark) 01
- 新站是如何做到百度秒录入
- 与门的Python实现
热门文章
- “Random“ objects should be reused解决 Random() 低效问题
- 设置字段默认值Java_小书MybatisPlus第9篇-常用字段默认值自动填充
- 插画构图的六种基本形式,小白必看!
- Java程序员的技术进阶成长路线
- 指向 类成员函数 的 函数指针
- 《剑指offer》刷题——【链表】从尾到头打印链表
- 各种数据库总结与页面传值及小技巧等杂汇
- 大学四年是这么度过的——大学四年总结
- java 函数表_C语言、Java语言的符号表区别和特点是什么?分别是如和处理函数参数的?...
- Latex Zotero导出格式化Bibtex条目