为CFileDialog类指定一个默认的文件夹

来源:互联网 发布:vp矢量化软件 编辑:程序博客网 时间:2024/05/23 07:24
原文
CFileDialog类说明
在MFC中编程序,如果想使用选择文件对话框功能,CFileDialog类是首选。它可以简便打开选择文件的对话框,让使用者选择一个或者多个文件。一般使用时,默认是打开“我的文档”,使用者不得不使用鼠标再次点选其他的文件夹。假如,我们想让CFileDialog打开自己指定的文件夹目录呢? 又如何实现呢。本文将告诉你如何实现这种功能。


CFileDialog使用实例
折叠展开 C/C++ Code
CString strFile;
CString defExe("dat");
CString defFileName("*.dat");
CString defFilter("数据文档(*.dat)|*.dat|所有文件(*.*)|*.*|");
CFileDialog dlg(true,defExe,defFileName,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,defFilter);
dlg.m_ofn.lpstrInitialDir= "c:\\windows\\"; //指定文件夹
if(dlg.DoModal()==IDOK)
{
strFile = dlg.GetPathName();
MessageBox(strFile);
}


在上述代码中,我们指定了一个默认的文件夹“C:\windows”,当你运行上段代码时,文件选择对话框就会打开你设置的默认文件夹;如果此文件夹不存在,就会打开它自己默认的文件夹,比如“我的文档”。


上述代码中,defExe是定义了默认打开的文件类型(扩展名),defFileName则定义了打开的文件名,defFilter是过滤文件类型。 当你点击“确定”,就会进入if语句中,strFile则得到你选择的文件全部路径,如 “C:\windows\system32\cmd.exe”等。
、、------------------------------
另一种方法

CString OpenFilter;
OpenFilter = "bmp Files (*.bmp)|*.bmp|";//打开文件时的过滤器
::SetCurrentDirectory(_T("..//image") );//设置默认打开路径为相对路径下的image文件夹!

//VC6.0下应该是::SetCurrentDirectory(".//image") ;少一个点
CFileDialog myDialog(
TRUE, _T("bmp"), _T(".bmp"),
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,
OpenFilter, this);


if (myDialog.DoModal() == IDOK)//对话框创建成功
{
if (m_bInit)//如果重新调用了一幅图片,则把以前的数组空间释放,重新申请
DeleteAllArr();
m_sFile = myDialog.GetPathName();//GetFileName
UpdateData( FALSE );//从外部接收数据

USES_CONVERSION;//CString转char* (vs2005)
char *p =T2A(m_sFile);
.........

}

CString OpenFilter;OpenFilter = "bmp Files (*.bmp)|*.bmp|";//打开文件时的过滤器::SetCurrentDirectory(_T("..//image") );//设置默认打开路径为相对路径下的image文件夹!

//VC6.0下应该是::SetCurrentDirectory(".//image") ;少一个点CFileDialog myDialog(TRUE, _T("bmp"), _T(".bmp"),OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,OpenFilter, this);

if (myDialog.DoModal() == IDOK)//对话框创建成功{if (m_bInit)//如果重新调用了一幅图片,则把以前的数组空间释放,重新申请DeleteAllArr();m_sFile = myDialog.GetPathName();//GetFileNameUpdateData( FALSE );//从外部接收数据

USES_CONVERSION;//CString转char* (vs2005)char *p =T2A(m_sFile);.........

}

0 0
原创粉丝点击