VS MFC CFileDialog类 打开文件对话框和另存为对话框

 1 explicit CFileDialog(

 2    BOOL bOpenFileDialog,     指定的参数创建哪种类型的对话框。 设置到构造 文件已打开 对话框的 TRUE。 设置到构造 保存文件 对话框的 FALSE。

 3    LPCTSTR lpszDefExt = NULL,    默认的文件扩展名。 如果用户在文件名框中不包括包含在用户的计算机上的关联) 的已知扩展 (一,lpszDefExt 指定的扩展自动追加到文件名。 如果此参数是 NULL,扩展不是追加。

 4    LPCTSTR lpszFileName = NULL,    显示文件名框的初始文件名。 如果 NULL,不是初始文件名显示。

 5    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,    可以使用自定义对话框一个或多个标记的组合。 有关这些标志的说明,请参见。Windows SDK的 OPENFILENAME 结构。 如果修改 m_ofn.Flags 结构成员,请使用按位或运算符在您的更改保持默认值行为不变。

 6    LPCTSTR lpszFilter = NULL,    一系列字符串名称的筛选器可应用于文件。 如果指定的文件筛选器,因此,只有符合筛选条件将出现在文件的文件的列表。 请参见"备注"部分有关如何安装的更多信息与文件筛选器一起使用。

 7    CWnd* pParentWnd = NULL,    指针到文件对话框的父级或所有者窗口。

 8    DWORD dwSize = 0,

 9    BOOL bVistaStyle = TRUE

10 );

1.另存为对话框
 1 void CMFCApplication_testDlg::OnFileWrite()

 2 {

 3     // TODO: 在此添加命令处理程序代码

 4     //CFile::modeCreate    创建文件,若已存在,则清空内容

 5     //CFile::modeWrite    可写

 6 

 7     //szFilters is a text string that includes some file name filters:

 8     static TCHAR szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")

 9    _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")

10    _T("*.xlc; *.xls|All Files (*.*)|*.*||");

11     CFileDialog fileDlg(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);

12     fileDlg.m_ofn.lpstrTitle = _T("Linden");    //设置对话框的标题

13     //fileDlg.m_ofn.lpstrFilter = _T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");    //设置文件的过滤条件

14     fileDlg.m_ofn.lpstrDefExt = _T("txt");    //设置默认扩展名

15     if(IDOK == fileDlg.DoModal()){

16         CFile file(fileDlg.GetPathName(),CFile::modeCreate | CFile::modeWrite);

17         char pBufWrite[] = "test:abcdefghijklmny";

18         file.Write(pBufWrite,strlen(pBufWrite));

19         file.Close();

20     }

21 }

2.打开文件对话框

 1     CFileDialog fileDlg(TRUE);

 2     fileDlg.m_ofn.lpstrFilter = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");        //设置过滤器 

 3     if(IDOK == fileDlg.DoModal()){

 4         CFile file(fileDlg.GetPathName(),CFile::modeRead);    //GetPathName():得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt

 5         char *pBuf;

 6         DWORD dwFileLen;

 7         dwFileLen = file.GetLength();

 8         pBuf = new char[dwFileLen + 1];

 9         pBuf[dwFileLen] = 0;

10         file.Read(pBuf,dwFileLen);

11         file.Close();

12         ::MessageBoxA( 0, pBuf, 0, MB_OK );    //VS2012默认工程字符集为UNICODE

13     }

 

 

你可能感兴趣的:(dialog)