http://blog.csdn.net/tianhai110/article/details/2055149

CFileDialog经常用,但经常忘,现归纳整理下,方便今后查询。

例子:

CFileDialog openDlg( TRUE, "Material File(*.material)|*.material", NULL,

OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

"Material File(*.material)|*.material||", this);

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                       指明一些特定风格。 (默认OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT)

lpszFilter                     指明可供选择的文件类型和相应的扩展名。

pParentWnd                为父窗口指针。

其中,扩展名应遵循下面的格式:

"Chart Files (*.xlc)|*.xlc| Worksheet Files (*.xls)|*.xls| Data Files (*.xlc;*.xls)|*.xlc ; *.xls| All Files (*.*)|*.*||";

文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明

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变量。

dwFlags的风格有:

#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

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

CFileDialog使用总结的更多相关文章

  1. CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习

    CFileDialog(文件夹对话框类) 主要用于文件的保存,另存,打开,关闭等功能 功能“另存为”的实现: void CTXTDlg::OnFileSaveas() { LPCTSTR szFilt ...

  2. MFC CFileDialog用法例子。

     Set it to TRUE to construct a File Open dialog box. Set it to FALSE to construct a File Save As dia ...

  3. CFileDialog 、CFile 如何进行文件操作 [转]

    如何进行文件操作 [1]显示对话框,取得文件名 CString FilePathName; CFileDialog dlg(TRUE);//TRUE为OPEN对话框,FALSE为SAVE AS对话框 ...

  4. CFileDialog的用法

    CFileDialog 在MSDN中的函数原形 CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, L ...

  5. CFileDialog的使用方法简单介绍

    CFileDialog文件选择对话框的使用:首先构造一个对象并提供对应的參数,构造函数原型例如以下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, L ...

  6. CFileDialog 打开文件夹文件 保存文件夹文件

    格式说明: explicit CFileDialog(    BOOL bOpenFileDialog,                         //TRUE 为打开, FALSE 为保存 L ...

  7. CFileDialog 使用简单介绍

    CFileDialog使用文件选择对话框:首先构造一个对象,并提供一个相应的参数,构造函数原型例如,下面的: CFileDialog::CFileDialog( BOOL bOpenFileDialo ...

  8. CFileDialog类与16进制格式的dat文件

    CFileDialog类与16进制格式的dat文件 要将数据保存为.dat文件,而且是16进制的数字,怎么保存? 要读取.dat文件,文件是16进制的,怎么读取? 用CFileDialog类可以得到[ ...

  9. 关于设置CFileDialog的默认路径

    CFileDialog   d_File(FRUE, NULL,NULL,NULL,szFilter,FromHandle(m_hWnd)); // 如果写了下面这句那么每次打开都是这个设置的默认路径 ...

随机推荐

  1. secure CRT记住密码不可用

    secure CRT 记住密码,琢磨好几天了. 终于发现要在软件打开的时候设置了密码才能让每个会话记住密码. 一直懒得在打开软件的时候设置密码,结果每次打开会话都要输入密码...为了省下输入一次密码, ...

  2. 从程序员到CTO的Java技术路线图 (转自安卓巴士)

    在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型. ...

  3. 1024: [SCOI2009]生日快乐

    暴力题,N<=10,没注意到平均分,读题真是.. 我们对于一个矩形分成两块进行搜.然后求较大值. ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n ...

  4. css内边距与外边距的区别

    你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素.内联元素中的区别?什么时候该用 padding而不是margin?你知道负margin吗?你 ...

  5. php调试工具firephp

    PHP调试有很多中方法.今天给大家推荐的是 FirePHP 这个工具,是基于firefox的一个组件.Firephp组件安装地址.使用之前需要先安装下这个组件.完了还需要down一个FirePHP的包 ...

  6. c# 发送消息到Email

    /// <summary>        /// 发送消息到Email        /// </summary>        /// <param name=&quo ...

  7. HDU 2529 Shot (物理数学题)

    题目 解题过程: //物理数学题 #include<stdio.h> #include<string.h> #include<algorithm> using na ...

  8. 【leetcode】Multiply Strings(middle)

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  9. ***php(codeigniter)中如何重定向

    Q: 在保存完数据之后需要重定向,防止数据重复提交. 我使用$this->方法名();跳转,发现不能达到重定向的效果(地址栏没变) 请教高手重定向怎么用 A: $this->load-&g ...

  10. 无线Ad-hoc网络的关键技术之路由(转)

    无线Ad-hoc网络的关键技术之路由http://network.51cto.com/art/201003/189719.htm