CFileDialog类示例

本文详细介绍了CFileDialog类的使用,包括示例代码、构造函数、lpszFilter参数的作用以及dwFlags参数的含义。文章提到,lpszFilter用于指定文件类型筛选,dwFlags用于初始化对话框并设定用户交互行为。同时,文中澄清了CFileDialog不会改变程序当前目录的误解,并提供了测试代码以验证这一结论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、示例代码在Microsoft Visual Studio 2013中编译通过,运行正常。

//CFileDialog类

BOOL isOpen = TRUE;        //是否打开(TRUE为打开对话框,FALSE为保存对话框)    
CString defaultDir = _T("C:\\Users\\TF\\Documents");   //默认打开的文件路径    
CString defaultFile = L"test1.txt";         //默认打开的文件名    
CString filter = L"文本(*.txt)|*.txt|所有类型(*.*)|*.*||";   //文件过虑的类型    
CFileDialog openFileDlg(isOpen, NULL, defaultDir + "\\" + defaultFile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL);
INT_PTR result = openFileDlg.DoModal();//是否选中文件,或取消了选择
if (result == IDOK)
{
CString pathName, fileName,titleName,extName;
pathName = openFileDlg.GetPathName();//得到完整的文件名,包括目录名和扩展名如:c:/test/test1.txt
fileName = openFileDlg.GetFileName();//得到完整的文件名,包括扩展名如:test1.txt
titleName=openFileDlg.GetFileTitle();//得到完整的文件名,不包括目录名和扩展名如:test1
extName = openFileDlg.GetFileExt();// 得到完整的文件扩展名,如:txt
MessageBox(pathName + "\r" + fileName + "\r" + titleName + "\r" + extName);//通过显示,注意几者区别

}

二、MSDN上查到的构造函数

explicit CFileDialog(

    BOOL bOpenFileDialog,    //显示的窗口,文件打开对话框或文件另存为对话框
    LPCTSTR lpszDefExt = NULL,    //默认的文件扩展名,会自动追加到文件名后。
    LPCTSTR lpszFileName = NULL,    //显示在文件名编辑栏的初始文件名。  
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,    //用来自定义对话框的标志组合(后详)  
    LPCTSTR lpszFilter = NULL,    //文件筛选(结构见后述)  
    CWnd* pParentWnd = NULL,    //父窗口指针(通常都NULL) 
    DWORD dwSize = 0,    //The size of the OPENFILENAME structure.(找时间查查OPENFILENAME structure)  
    BOOL bVistaStyle = TRUE);    //显示Vista样式,为TRUE时使用new Vista file dialogs,为FALSE时将使用旧样式dialogs.


示例代码中:

给第1、3、5个参数进行了赋值。而第2、4、6个参数使用了构造函数中的缺省值。没有用到后两个参数(第7、8个)。

三、关于lpszFiler参数

用来筛选在文件列表中显示的文件的类型。

1、参数由“文件类型说明”和“扩展名”组成,之间用“|”来分隔。例如示例中的

    “文本(*.txt)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值