文件对话类CFileDialog使用说明

CFileDialog封装用于文件打开或文件保存操作的通用对话框;
1、构造函数原型
explicit CFileDialog(
    BOOL bOpenFileDialog,
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL,
    DWORD dwSize = 0,
    BOOL bVistaStyle = TRUE);}
参数

bOpenFileDialog为对话框类型的参数。 如果为 TRUE 则构造 "文件打开" 对话框。 如果为 FALSE 则构造“文件保存”对话框;

lpszDefExt为默认文件名扩展名, 如果在 Filename 框中不包含已知的扩展名,则 lpszDefExt指定的扩展名将自动加到文件名中。 如果此参数为 NULL,则不附加任何扩展。

lpszFileName显示在"文件名"框中的初始文件名。 如果为 NULL,则不显示初始文件名。

dwFlags可用于自定义对话框的一个或多个标志的组合。

lpszFilter一系列字符串对,用于指定可以应用于文件的筛选器。 如果指定文件筛选器,则"文件"列表中将仅显示与筛选条件匹配的文件。

参数格式如:
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

pParentWnd指向文件对话框的父窗口或所有者窗口的指针;

dwSize为OPENFILENAME结构的大小。 此值取决于操作系统版本;

bVistaStyle指定文件对话框样式的参数。 将其设置为 TRUE 以使用新的 Vista 样式文件对话框。 否则,将使用对话框的旧样式。 

要使用CFileDialog,首先用构造函数构造一个对象,当创建了一个对话框后,可以设置或修改m_ofn结构中的值来初始化对话框控件的值或状态。初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。
2、重要函数

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变量。
3、示例
(1)、打开文件
void COpenSaveFileDialogDlg::OnBnClickedButtonOpen()
{
    BOOL isOpen = TRUE;        //是否打开(否则为保存)
    CString defExt("wav");    //默认打开的文件路径
    CString filename("test.wav");            //默认打开的文件名
    CString filter("Wave Filter(*.wav)| *.wav|All Files (*.*)|*.*||");    //文件过虑的类型
    CFileDialog openFileDlg(isOpen, defExt, filename, OFN_HIDEREADONLY|OFN_READONLY, filter, NULL);
    openFileDlg.GetOFN().lpstrInitialDir = TEXT("C:\\Users\\huguofeng\\source\\repos\\MutiMedia\\test\\");
    INT_PTR result = openFileDlg.DoModal();
    CString filePath = filename;
    if(result == IDOK) {
        filePath = openFileDlg.GetPathName();
    }
    CWnd::SetDlgItemTextW(IDC_EDIT_SRC, filePath);

(2)、保存文件
void COpenSaveFileDialogDlg::OnBnClickedButtonSave()
{
    BOOL isOpen = FALSE;        //是否打开(否则为保存)
    CString defExt("wav");    //默认打开的文件路径
    CString filename("test.wav");            //默认打开的文件名
    CString filter = filter("Wave Filter(*.wav)| *.wav|All Files (*.*)|*.*||");    //文件过虑的类型
    CFileDialog openFileDlg(isOpen, defExt, filename, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, filter, NULL);
    openFileDlg.GetOFN().lpstrInitialDir =TEXT("C:\\Users\\huguofeng\\source\\repos\\MutiMedia\\test\\");
    INT_PTR result = openFileDlg.DoModal();
    CString filePath = fileName;
    if(result == IDOK) {
        filePath = openFileDlg.GetPathName();
    }
    CWnd::SetDlgItemTextW(IDC_EDIT_DEST, filePath);
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大浪淘沙胡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值