为程序添加“打开文件”对话框和“另存为”对话框
Posted Autumn の Box
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为程序添加“打开文件”对话框和“另存为”对话框相关的知识,希望对你有一定的参考价值。
1、相关类: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:指定默认的文件扩展名;
lpszFileName:指定显示在文件对话框中的初始文件名;
dwFlags:定制文件对话框,该参数值与OPENFILENAME结构体中的Flags字段相同;
lpszFilter:用来指定一个或一组文件过滤器,只有选定的文件才会出现在文件列表中;
pParentWnd:用来指定文件对话框的父窗口或拥有者窗口;
2、改变“打开”或“另存为”对话框的标题
CFileDialog::m_ofn.lpstrTitle
3、设置过滤器(设置保存类型)
CFileDialog::m_ofn.lpstrFilter
注意:各过滤字符串对之间及字符串对内部的两个字符串之间均以\0分割,过滤器结尾必须以\0\0结尾;对于一个字符串对来说,第一个字符串用于描述,如“Text File(*.txt)”;第二个字符串表明使用的文件扩展名,多个扩展名可以用分号隔开,如“*.txt;*.text”;
4、获取和设置文件的相关属性
CFileDialog::GetPathName
CFileDialog::GetFileName
CFileDialog::GetFileExt
CFileDialog::GetFileTitle
CFileDialog::GetNextPathName
CFileDialog::GetStartPosition
//“另存为”对话框示例: CFileDialog fileDlg(FALSE, "txt"); fileDlg.m_ofn.lpstrTitle = "我要保存在"; fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"; if(IDOK == fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite); file.Write("hello world!", strlen("hello world!")); file.Close(); }
//“打开”对话框示例: CFileDialog fileDlg(TRUE); fileDlg.m_ofn.lpstrTitle = "我要打开"; fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0\0"; if(IDOK == fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(), CFile::modeRead); char *pBuf; DWORD dwFileLen; dwFileLen = file.GetLength(); pBuf = new char[dwFileLen + 1]; pBuf[dwFileLen] = 0; file.Read(pBuf, dwFileLen); file.Close(); MessageBox(pBuf); }
以上是关于为程序添加“打开文件”对话框和“另存为”对话框的主要内容,如果未能解决你的问题,请参考以下文章