visual c++中CFileDialog对话框
CFileDialog对话框
CFileDialog类主要提供一个文件对话框,如图1所示。

图1 文件存取对话框
CFileDialog的构造函数用于创建一个文件对话框,其原型如下:
CFileDialog(Bool bOpenFileDialog,LPCTSTR lpszDefExt=NULL,
LPCTSTR lpszFileName=NULL,
DWORD dwflags=OPN-HIDEREADONLY|OFN-OVERWRITEPROMPT,
LPCTSTR lpszFilte) 参数bOpenFileDialog值为真时,创建一个FileOpen对话框,否则创建一个FileSave对话框;lpszDefExt为程序自动添加的文件扩展名;lpszFilter用来指定文件列表框中的文件名;dwFlags是决定对话框风格的一组标志;lpszFilter用来指定文件列表框中可以出现的文件类型,每一种文件类型用两个字符串描述,字符串之间用“|”符分隔,最后以两个“|”符结束;pParentWNd是指向父窗口的指针。
CFileDialog类中常用的成员函数如表1所示。

表1 CFileDialog类中常用的成员函数
函 数 名
说 明
GetPathName
返回用户在对话框中选择的包括文件名在内的完整路径
GetFileName 返回用户在对话框中选择的文件名
GetFileExt 返回用户在对话框中选择的文件扩展名
GetFileTitle 返回用户在对话框中选择的文件名(不带扩展名)
通过CFileDialog类提供的GetPathName()和GetFileName()两个成员函数,可以取出用户选取的完整路径(包括文件名)及文件名。
请看下面的例子:单击【选择文件】按钮,选择一个文件,在下方的文件信息区域出现关于此文件的信息,如图2所示。
单击打开FileOpen对话框
所选择文件的部分信息

图2 CFileDialog实例
双击【…】按钮,添加OnButton1函数,在此函数中输入以下代码:
void CMyDlg::OnButton1()
{
CFileDialog dlg(true,"文本文件",NULL,0,"所有文件|*.*");
dlg.DoModal();
//http://www.isstudy.com
m_EdtFileName.SetWindowText(dlg.GetFileName()); //显示文件名
CFile file; //声明一个CFile对象
file.Open(dlg.GetPathName(),CFile::modeRead);
float fFileLenght=(float)file.GetLength(); //取出文件大小
CString str;
str.Format("%f",fFileLenght/1024);
file.Close();
m_EdtPath.SetWindowText(dlg.GetPathName()); //取出文件完整路径
m_EdtFileExt.SetWindowText(dlg.GetFileExt()); //取出扩展名
m_EdtSize.SetWindowText(str);
}