设为首页 加入收藏

TOP

6.7.1 使用"文件"对话框打开和保存文件
2013-10-07 00:35:23 来源: 作者: 【 】 浏览:66
Tags:6.7.1 使用 " 文件 对话 打开 保存

6.7  Windows通用对话框

教学录像:光盘\TM\lx\6\Windows通用对话框.exe

Windows通用对话框是由操作系统提供的任何应用程序都可获得的对话框。在Visual C++(www.cppentry.com)中,对这些对话框进行了封装,使用户在开发程序时可以方便地调用这些对话框。不过Windows通用对话框从用户处获取消息,返回相应的消息,但不进行消息处理,如果用户要进行更进一步的处理,还需要自行为进一步的处理添加代码。下面就来介绍一下通用对话框的应用。

6.7.1  使用"文件"对话框打开和保存文件

"文件"对话框为打开和保存文件提供了一个方便的接口,在MFC中CFileDialog类对"文件"对话框进行了封装。

使用"文件"对话框时要创建一个"文件"对话框对象,通过构造函数进行初始化。

语法格式如下:

CFileDialog( BOOL bOpenFileDialog, 
LPCTSTR lpszDefExt = NULL, LPCTSTR
lpszFileName = NULL, DWORD dwFlags =
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL );

CFileDialog构造函数中的参数说明如表6.4所示。

表6.4  CFileDialog构造函数中的参数说明

    < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

bOpenFileDialog

如果值为TRUE,构造“打开”对话框;
FALSE,构造“另存为”对话框

lpszDefExt

用于确定文件默认的扩展名,如果为NULL
没有扩展名被插入到文件名中

lpszFileName

确定编辑框中初始化时的文件名称,如果为NULL
编辑框中没有文件名称

dwFlags

用于自定义“文件”对话框

lpszFilter

用于指定对话框过滤的文件类型

pParentWnd

标识“文件”对话框的父窗口指针

说明:lpszFilter参数格式:文件类型说明和扩展名间用"|"分隔,每种文件类型间用"|"分隔,末尾用"||"结束。

在使用"文件"对话框时,还需要通过"文件"对话框的一些常用函数来实现用户需要的功能。"文件"对话框的常用函数如表6.5所示。

表6.5  "文件"对话框的常用函数

   

DoModal

用于显示“文件”对话框,供用户选择文件

GetPathName

用于返回用户选择文件的完整路径,包括文件的路径、
文件名和文件扩展名

GetFileName

用于返回用户选择的文件名称,包括文件名和扩展名,
但不包含路径

GetFileExt

用于返回“文件”对话框中输入的文件扩展名

GetFileTitle

用于返回“文件”对话框中输入的文件名称,
不包含路径和扩展名

OnFileNameOK

用于检查“文件”名称是否正确

例6.6  下面使用"文件"对话框打开和保存文件。程序设计步骤如下:(实例位置:光盘\TM\sl\6\2)

(1)创建一个基于对话框的应用程序,将对话框的Caption属性修改为"使用'文件'对话框打开和保存文件"。

(2)向对话框中添加两个静态文本控件、一个编辑框控件和两个按钮控件。

(3)处理"打开"按钮的单击事件,在静态正文中显示文件路径,在编辑框中显示文件内容。代码如下:

void CFileDialogDlg::OnOpen() //"打开"按钮单击事件处理函数
{
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"All Files(*.TXT)|*.TXT||",AfxGetMainWnd()); //构造文件打开对话框
CString strPath,strText="";     //声明变量
if(dlg.DoModal() == IDOK)      //判断是否按下"打开"按钮
{
strPath = dlg.GetPathName();    //获得文件路径
m_OpenPath.SetWindowText(strPath);  //显示文件路径
CFile file(strPath,CFile::modeRead);   //打开文件
char read[10000];      //声明字符数组
file.Read(read,10000);     //读取文件内容
for(int i=0;i<file.GetLength();i++)   //根据文件大小设置循环体
{
strText += read[i];     //为字符串赋值
}
file.Close();       //关闭文件
m_FileText.SetWindowText(strText);   //显示文件内容
}
}


(4)处理"保存"按钮的单击事件,在静态正文中显示文件路径,将编辑框中的内容保存到文件中。代码如下。

void CFileDialogDlg::OnSave() //"打开"按钮单击事件处理函数
{
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"All Files(*.TXT)|*.TXT||",AfxGetMainWnd());    //构造文件另存为对话框
CString strPath,strText="";        //声明变量
char write[10000];          //声明字符数组
if(dlg.DoModal() == IDOK)         //判断是否按下"保存"按钮
{
strPath = dlg.GetPathName();       //获得文件保存路径
if(strPath.Right(4) != ".TXT")       //判断文件扩展名
strPath += ".TXT";        //设置文件扩展名
m_SavePath.SetWindowText(strPath);     //显示文件路径
CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite); //创建文件
m_FileText.GetWindowText(strText);     //获得编辑框中内容
strcpy(write,strText);         //将字符串复制到字符数组中
file.Write(write,strText.GetLength());      //向文件中写入数据
file.Close();          //关闭文件
}
}
实例的运行结果如图6.25所示。
 
图6.25  "文件"对话框打开和保存文件
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.7.3 使用"颜色"对话.. 下一篇6.7.2 使用"字体"对话..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: