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

原文
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();//GetFileName UpdateData( FALSE );//从外部接收数据

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值