CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。
成员变量:
m_ofn: m_ofn是OPENFILENAME类型的结构。使用此结构,在创建之后、用DoModal成员函数显示之前初始化文件打开和存盘对话框的外表。
①m_ofn的lpstrTitle成员是文件对话框的标题:
dlg . m_ofn . lpstrTitle = _T("打开文件"); // 打开文件对话框的标题名(dlg是一个CFileDialog类的对象)
②m_ofn的Flag成员是文件对话框的一些属性标记,可以是一些标记的组合:
OFN_ALLOWMULTISELECT :指定文件名列表框允许多选。
OFN_EXPLORER :指出任何打开或另存为对话框使用新的Explorer风格的用户化模块。(VC6中不支持)
这些标志可在CFileDialog类的构造函数的第四个参数dwFlags中指定。
成员函数:
(1) 构造函数CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL
);
参数:
bOpenFileDialg:如果为TRUE,则创建文件打开对话框;如果为FALSE,则构造一个File Save As(另存为)对话框。
lpszDefExt:缺省文件扩展名,如果用户在文件名编辑框中不包含扩展名,则lpszDefExt定义的扩展名自动加到文件名后。如果为NULL,则不添加扩展名。
lpszFileName:初始显示于文件名编辑框中的文件名,如果为NULL,则不显示初始文件名。
dwFlags:一个或多个标志的组合,使你可定制对话框。即OPENFILENAME结构中的Flag成员。
lpszFilter:一列字符串对,指定可以应用到文件的过滤器。如果指定过滤器,则只有符合规则的文件显示于文件列表框中。
pParentWnd 指向文件对话框对象的父窗口或拥有者窗口。
(2) int DoModal(); //弹出文件对话框
返回值:IDOK:表示用户在文件对话框中选择了文件并点击了“打开”按钮。
IDCANCEL:表示用户在文件对话框中点击了“取消”按钮。
(3) CString GetFileName( ); //返回文件名
说明:文件名包括基本名和扩展名,例如:对于文件C:\FILES\TEXT.DAT,则会返回:TEXT.DAT
如果m_ofn.Flags具有OFN_ALLOWMULTISELECT标志设置,则应用GetStart-Position 和GetNextPathName成员函数获取一个文件路径名。
(4) CString GetFileTitle(); //返回文件基本名
(5) CString GetFileExt( ); //返回文件名的扩展名
(6) CString GetPathName( ); //返回文件的完整路径
说明:调用此成员函数获取输入到对话框中文件的全路径,路径包括文件标题和文件的全部目录路径。
如果对文件“C:\FILES\TEXT.DAT”调用此成员函数,GetRathMane则会返回“C:\FILES\TEXT.DAT”。
文件过滤器说明:
lpszFilter参数用于判断文件名类型及文件列表框中哪些可被显示。双字符串的第一个字符串描述过滤器,第二个串表明使用的文件扩展名,
多重扩展可用“;”来指定。字符串由两个“|”字符结尾,最后是一个NULL。也可使用CString对象作为参数。
例如:有两个过滤规则,一个是图片文件:*.bmp或者*.jpg;另一个是所有文件:*.*。则过滤规则为:
" 图片文件 |*.jpg;*.bmp | 所有文件 | *.* ||"
例如:Mirosoft Excel 允许用户用.XLC扩展名(表)或.XLS(工作表)打开文件,Excel过滤器应如下:
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";