mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」目录文件对话框的分类文件对话框类CFileDialog对话框选项常用属性(实例:dialog)对话框常用方法文件对话框实例文件对话框的分类文件对话框分为打开文件对话框和保存文件对话框,相信大家在Wi

 

 

目录

文件对话框的分类

文件对话框类CFileDialog

对话框选项常用属性(实例:dialog) 

对话框常用方法

 文件对话框实例


 

 

文件对话框的分类

      文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的路径,这个对话框就是打开文件对话框;除了“打开”选项一般还会有“另存为”选项,选择“另存为”后往往也会有一个对话框弹出,让我们选择保存路径,这就是保存文件对话框。

       正如上面举例说明的,打开件对话框用于选择要打开的文件的路径,保存文件对话框用来选择要保存的文件的路径。

文件对话框类CFileDialog

      MFC使用文件对话框类CFileDialog封装了对文件对话框的操作。CFileDialog类的构造函数原型如下:

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
);

  

    1) bOpenFileDialog:指定要创建的文件对话框的类型。设为TRUE将创建打开文件对话框,FALSE为创建保存文件对话框。

    2 )lpszDefExt:默认的文件扩展名。如果用户在文件名编辑框中没有输入扩展名,则由lpszDefExt指定的扩展名将被自动添加到文件名后。默认为NULL。

    3) lpszFileName:文件名编辑框中显示的初始文件名。如果为NULL,则不显示初始文件名。

    4) dwFlags:文件对话框的属性,可以是一个值也可以是多个值的组合。关于属性值的定义,可以在MSDN中查找结构体OPENFILENAME,元素Flags的说明中包含了所有属性值。默认为OFN_HIDEREADONLY和OFN_OVERWRITEPROMPT的组合,OFN_HIDEREADONLY表示隐藏文件对话框上的“Read Only”复选框,OFN_OVERWRITEPROMPT表示在保存文件对话框中如果你选择的文件存在了,就弹出一个消息对话框,要求确定是否要覆盖此文件。

     5) lpszFilter:文件过滤器,它是由若干字符串对组成的一个字符串序列。如果指定了文件过滤器,则文件对话框中只有符合过滤条件的文件显示在文件列表中待选择。给大家看看VS2010 MSDN中给出的一个例子:

       static TCHAR BASED_CODE szFilter[] = _T(“Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||”);

       这样设置过滤器以后,文件对话框的扩展名组合框中将有四个选项:Chart Files (*.xlc)、Worksheet Files (*.xls)、Data Files(*.xlc;*.xls)和All Files (*.*),大家可以看到每种文件的扩展名规定都是一个字符串对,例如Chart Files的过滤字符串是Chart Files(*.xlc)和*.xlc成对出现的。

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

      6) pParentWnd:文件对话框的父窗口的指针。

      7) dwSize:OPENFILENAME结构体的大小。不同的操作系统对应不同的dwSize值。MFC通过此参数决定文件对话框的适当类型(例如,创建Windows 2000文件对话框还是XP文件对话框)。默认为0,表示MFC将根据程序运行的操作系统版本来决定使用哪种文件对话框。

      8) bVistaStyle:指定文件对话框的风格,设为TRUE则使用Vista风格的文件对话框,否则使用旧版本的文件对话框。此参数仅在Windows Vista中编译时适用。

对话框选项常用属性(实例:dialog) 

dialog.m_ofn.lpstrTitle:显示窗口标题。

dialog.m_ofn.lpstrInitialDir:初始化展开路径。

dlg.m_ofn.lpstrFile:默认文件

dlg.m_ofn.lpstrFilter:文件筛选类型,注意与lpszFilter区别,要用”\0″,不能用”|”

如:dlg.m_ofn.lpstrFilter=”所有文件\0*.*\0图像文件\0*.jpg;*.bmp;*.gif\0\0″;

对话框常用方法

文件对话框也是模态对话框,所以在打开时也需要调用CFileDialog类的DoModal()成员函数。在打开文件对话框中点了“打开”或者在保存文件对话框中点了“保存”以后,我们可以使用CFileDialog类的成员函数GetPathName()获取选择的文件路径。

       下面列出几个CFileDialog类的成员函数,我们可以使用它们获得文件对话框中的各种选择。

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

 文件对话框实例

根据前面所讲内容,现在给大家做个文件对话框实例。

1.创建一个基于对话框的MFC应用程序工程,名称设为“TestFile”。

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

然后在应用程序类型中选择”基于对话框”

 

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

创建完以后会显示出对话框窗口:

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

2.在对话框窗口中,删除自动生成的“TODO:在此放置对话框控件。”静态文本框。

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

从”视图”中的”工具栏”中添加两个编辑框(Edit Control),右键属性修改ID分别为IDC_OPEN_EDIT和IDC_SAVE_EDIT,再添加两个按钮,ID分别设为IDC_OPEN_BUTTON和IDC_SAVE_BUTTON,Caption分别设为“打开”和“保存”。按钮IDC_OPEN_BUTTON用于显示打开文件对话框,编辑框IDC_OPEN_EDIT显示在打开文件对话框中选择的文件路径。按钮IDC_SAVE_BUTTON用于显示保存文件对话框,编辑框IDC_SAVE_BUTTON显示在保存文件对话框中选择的文件路径。

3.分别为按钮IDC_OPEN_BUTTON和IDC_SAVE_BUTTON添加消息处理函数CTestFileDlg::OnBnClickedOpenButton()和CTestFileDlg::OnBnClickedSaveButton()。就是右键“添加事件处理程序”,最后点击“添加编辑”。

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

添加完以后的消息处理函数如图:

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

4.修改两个消息处理函数如下:

void CTestFileDlg::OnBnClickedOpenButton()   
{   
    // TODO: Add your control notification handler code here   
    // 设置过滤器   
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");   
    // 构造打开文件对话框   
    CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);   
    CString strFilePath;   
  
    // 显示打开文件对话框   
    if (IDOK == fileDlg.DoModal())   
    {   
        // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里   
        strFilePath = fileDlg.GetPathName();   
        SetDlgItemText(IDC_OPEN_EDIT, strFilePath);   
    }   
}   
  
  
void CTestFileDlg::OnBnClickedSaveButton()   
{   
    // TODO: Add your control notification handler code here   
    // 设置过滤器   
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");   
    // 构造保存文件对话框   
    CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);   
    CString strFilePath;   
  
    // 显示保存文件对话框   
    if (IDOK == fileDlg.DoModal())   
    {   
        // 如果点击了文件对话框上的“保存”按钮,则将选择的文件路径显示到编辑框里   
        strFilePath = fileDlg.GetPathName();   
        SetDlgItemText(IDC_SAVE_EDIT, strFilePath);   
    }   
}  

 注意:如果调试时,显示未定义标识符IDC_OPEN_EDIT和IDC_SAVE_EDIT,那么在.cpp文件的开头包含#include”resource.h”

编译运行程序,结果对话框如下:

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

 

 结果对话框上点“打开”按钮,显示打开文件对话框:

 

点“保存”按钮后,显示保存文件对话框:

 

在打开文件对话框和保存文件对话框都选择了文件路径后,主对话框如下:

mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

今天的文章mfc对话框打开文件_基于对话框的mfc应用程序实例「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/71270.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注