有些时候,我们的程序需要打开和保存指定类型的文件。比如.bmp .jpg .doc等等。
而点击主菜单上的MFC默认的打开和保存对话框时,系统会把所有的文件都显示出来,如果文件类型较多,要找到我们所需的文件就要不停地拖动滑块,造成了不必要的麻烦。那么,如何使这项工作变得简单又清晰呢?微软为我们提供了一个CFileDialog::CFileDialog函数,可以很好地解决这个问题。
先来看一下这个函数在MSDN的具体使用方法:
void CChildFrame::OnFileOpen()
{
// szFilters is a text string that includes two file name filters:
// "*.my" for "MyType Files" and "*.*' for "All Files."
char CChildFrame::szFilters[]=
"MyType Files (*.my)|*.my|All Files (*.*)|*.*||";
// Create an Open dialog; the default file name extension is ".my".
CFileDialog fileDlg (TRUE, "my", "*.my",
OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
// Display the file dialog. When user clicks OK, fileDlg.DoModal()
// returns IDOK.
if( fileDlg.DoModal ()==IDOK )
{
CString pathName = fileDlg.GetPathName();
// Implement opening and reading file in here.
...
//Change the window's title to the opened file's title.
CString fileName = fileDlg.GetFileTitle ();
SetWindowText(fileName);
}
}
下面来具体分析这个函数的参数。
第一个参数如果设置为TRUE,则代表打开一个对话框;若为FALSE,则是打开的是保存对话框;
第二个参数代表默认的文件扩展名,可以设为NULL;
第三个参数指定默认的文件名,可以设为NULL;
第四个参数指明特定的风格;
第五个参数指明可供选择的文件类型和相应的扩展名,具体的使用方法可以从上面的例子中看出。注意:最后的结尾是两道竖线。另外,还可以先定义一个字符串把所需要的文件后缀都写出来,然后再在使用时将该参数用字符串名来代替。方法如下:
static char BASED_CODE szFilter[] = "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";第六个参数为父窗口的指针。
本文详细介绍了如何使用CFileDialog函数简化文件打开和保存对话框的操作,通过设定过滤器来快速定位所需文件类型,提高程序效率。
1万+

被折叠的 条评论
为什么被折叠?



