河南省重点项目建设网站,网站如何做静态化,设计制作活动主题,在国外做网站网站犯法吗CFileDialog类
CFileDialog封装用于文件打开操作或文件保存操作的常见对话框。信息来源自Windows官方文档#xff1a;https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfiledialog-class?viewmsvc-170
这里重点介绍几个常用的函数功能#xff1a;
构造函数
explic…CFileDialog类
CFileDialog封装用于文件打开操作或文件保存操作的常见对话框。信息来源自Windows官方文档https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfiledialog-class?viewmsvc-170
这里重点介绍几个常用的函数功能
构造函数
explicit CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt NULL,LPCTSTR lpszFileName NULL,DWORD dwFlags OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter NULL,CWnd* pParentWnd NULL,DWORD dwSize 0,BOOL bVistaStyle TRUE);参数
1.bOpenFileDialog [in] 参数指定要创建的对话框类型。 将其设置为 TRUE 可构造“文件 打开”对话框。 将其设置为 FALSE 可构造“文件 另存为”对话框。
2.lpszDefExt [in] 默认的文件扩展名。 如果用户不包含已知扩展名 (在文件名框中) 用户计算机上具有关联的扩展 则 lpszDefExt 指定的扩展名会自动追加到文件名中。 如果此参数为 NULL则不会追加任何扩展名。
3.lpszFileName [in] “文件名”框中显示的初始文件名。 如果为 NULL则不会显示初始文件名。
4.dwFlags [in] 一个或多个标志的组合可用于自定义对话框。 有关这些标志的说明请参阅 Windows SDK 中的 OPENFILENAME 结构。 如果修改 m_ofn.Flags 结构成员请在更改中使用按位或运算符以保持默认行为不变。
5.lpszFilter [in] 一系列字符串对用于指定可应用于文件的筛选器。 如果指定文件筛选器则只有与筛选条件匹配的文件才会显示在“文件”列表中。 请参阅“注解”部分详细了解如何使用文件筛选器。
6.pParentWnd [in] 一个指针指向文件对话框的父窗口或所有者窗口。
7.dwSize [in] OPENFILENAME 结构的大小。 此值取决于操作系统版本。 MFC 使用了此参数来确定要创建的相应对话框类型。 默认大小为 0 表示 MFC 代码将根据运行程序的操作系统版本确定要使用的正确的对话框大小。
8.bVistaStyle [in] 注意 此参数在 Visual Studio 2008 及更高版本中可用因此仅当你在 Windows Vista 或更高版本中运行时才使用新样式对话框。
指定文件对话框样式的参数。 将其设置为 TRUE 可使用新 Vista 样式文件对话框。 否则将使用旧样式的对话框。 请参阅“注解”部分详细了解如何在 Vista 下运行。
显示函数
virtual INT_PTR DoModal();返回值
IDOK 或 IDCANCEL。 如果返回 IDCANCEL请调用 Windows CommDlgExtendedError 函数以确定是否发生了错误。
IDOK 和 IDCANCEL 是常量指示用户选择了“确定”按钮还是“取消”按钮。
返回的INT_PTR是常量要么是IDOK要么是IDCANCEL。如果有选中文件那么就是IDOK没有选中文件无法定义IDOK。
获取路径名、文件名等信息
if (result IDOK)//如果有选中文件那么result就是IDOK
{CString pathName, fileName, titleName, extName;pathName openDlg.GetPathName();//得到完整的文件名包括目录名和扩展名如c:/test/test1.txtfileName openDlg.GetFileName();//得到完整的文件名包括扩展名如test1.txttitleName openDlg.GetFileTitle();//得到完整的文件名不包括目录名和扩展名如test1extName openDlg.GetFileExt();// 得到完整的文件扩展名如txtMessageBox(pathName \r fileName \r titleName \r extName);//通过显示注意几者区别
}如此便成功将选择文件夹信息提取称为了CString。
实战案例
void CMFCCSVSENDDlg::OnBnClickedOpen()
{// TODO: 在此添加控件通知处理程序代码CFileDialog openDlg(TRUE,_T(CLS File(*.csv)|*.csv),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T(CLS File(*.csv)|*.csv||),this);INT_PTR result openDlg.DoModal();//以模态方式创建打开文件对话框if (result IDOK)//如果有选中文件那么result就是IDOK{CString pathName, fileName, titleName, extName;pathName openDlg.GetPathName();//得到完整的文件名包括目录名和扩展名如c:/test/test1.txtfileName openDlg.GetFileName();//得到完整的文件名包括扩展名如test1.txttitleName openDlg.GetFileTitle();//得到完整的文件名不包括目录名和扩展名如test1extName openDlg.GetFileExt();// 得到完整的文件扩展名如txtMessageBox(pathName \r fileName \r titleName \r extName);//通过显示注意几者区别}
}效果 注意
1.很多时候我们只需要路径和文件名就可以了所以没有必要非得在串口类里加CFileDialog类。
2.所谓保存其实也不是CFileDialog存的这个类确定了一个位置和文件后需要你手动添加代码实现才行。