今天尝试了下打开和另存为对话框。遇到了以下几个问题。
1.MFC 单文档的菜单栏新添加的项怎么添加响应;
2.文件打开后怎么操作它;
3.怎么在打开/另存为对话框里设置文件类型的过滤;
借助手册和实践得出如下解决方法:
MFC中用CFile类进行文件的操作,常用的CFile类的成员函数有Open、Read、Write等等。这是我们对文件的操作函数。
CFileDialog类则是负责打开/另存为对话框的相关任务了。在定位CDileDialog对象的时候给出的是TRUE的话则是打开对话框,是FALSE的话
则是另存为对话框。
CFileDialog file(TRUE);//打开对话框
CFileDialog file(FALSE);//另存为对话框
因为CFileDialog类派生自CDialog类,所以用他的成员函数DoModal就可以将其显示出来了。
针对第一个问题:在VC 6.0 的资源视图里面,找到menu资源,然后在其上增加一个标签“文件操作”,然后在这个标签下面增加一个项“打
开”:如下图所示:

增加好上面得操作之后,就可以为之添加按键响应。在打开文件上右击鼠标,选择ClassWizard,出现以下界面:

在Message中选择COMMAND,然后在点击右侧的ADD FUNCTION按钮。至此对其的响应就可以写在这个函数里面了。
例如写上:

CFileDialog file(TRUE); 

 file.DoMlodal(); 

 就可以在按下这个按钮的时候出现打开文件的对话框了。 

 针对第二个问题:就是在退出打开文件对话框后对文件的操作了,可以用以下代码: 

 if(IDOK==file.DoModal()){ 

 CFile myfile(file.GetPathName(),CFile::ModeCreate|CFile::ModeRead);//如此就读出选定的文件了 

 …//此处是对文件的操作了 

 }


针对第三个问题:CFileDialog类有个成员m_ofn,这个成员是一个结构体,其有成员lpstrFilter,这个就是设置过滤规则的,默认的 是没有过
滤。下面代码是一个过滤的实例:
file.m_ofn.lpstrFilter=”Text files(*.txt)/0”;
如此就过滤出了文本文件了。

打开/另存为对话框在设计中经常用的,此处做一个了简单的说明。