本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系将于24小时内删除
目录
1.实验原理
2.示例说明
1.实验原理
CFileDialog类
用CFileDialog类提供的通用文件对话框,实现Windows标准的【打开】和【另存为】功能。
CFileDialog
类的构造函数为:
CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags=OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter=NULL,CWnd *pParentWnd=NULL)
bOpenFileDialog 值为TRUE,构造【打开】对话框;值为FALSE,构造“另存为”对话框;
lpszDefExt=NULL 默认的文件扩展名
lpszFileName=NULL 出现在文件名编辑框中的初始文件名
dwFlags 指明一些特定风格。
lpszFilter 文件过滤器,用于确定显示在文件列表中的文件类型和相应的扩展名。
*pParentWnd=NULL pParentWnd 为父窗口指针
例如,以下字符串就是一个描述只在文件列表框中显示文本文件(*.txt)和Microsoft文件(*.doc)的过滤器。
CFileDialog dlg(TRUE,"bmp","*.bmp", OFN_HIDEREADONLY
|OFN_ALLOWMULTISELECT,"文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc||");
第1个参数TRUE:【打开】对话框;
第2个参数“bmp”:如果在文件名对话框中输入文件名时未指定扩展名,则会自动附加“.bmp”;
第3个参数“*.bmp”:文件名对话框中的初始文件名是*.bmp;
第4个参数代表dwFlags:不显示隐藏文件,且可以在列表框中进行多选;
第5个参数是过滤器:在文件类型下拉列表框中显示了文本文件(*.txt)和Word文件(*.doc)。
使用CFileDialog可按以下步骤进行。
(1) 构造CFileDialog类的对象。
(2) 调用成员函数DoModal( ),将对话框显示在屏幕上,并让用户从中选择文件。
(3) 如果DoModal( )返回的是IDOK,那么调用下表中的成员函数获取文件信息。
2.示例说明
创建一个基于对话框的
MFC
应用程序
,利用文件对话框打开一个文本文件。
创建一个按钮对话框,双击按钮按键
代码如下:
void CMFCA_对话框Dlg::OnBnClickedBtnRead()
{
// TODO: 在此添加控件通知处理程序代码
CString FilePathName;
CFileDialog dlg(TRUE, _T(""), _T(""),
OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT,
_T("文本文件(*.txt)|*.txt||"));
if (dlg.DoModal() == IDOK)
FilePathName = dlg.GetPathName(); //得到文件路径
ShellExecute(NULL, _T("open"), FilePathName, NULL, NULL, SW_RESTORE);//打开文件
//https://blog.csdn.net/struggling_jeff/article/details/89927162
//CView::OnLButtonDown(nFlags, point);
}
运行结果: