CFileDialog用法

CFileDialog的用来构建一个标准的Windows文件对话框,原型如下

CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
		LPCTSTR lpszDefExt = NULL,
		LPCTSTR lpszFileName = NULL,
		DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		LPCTSTR lpszFilter = NULL,
		CWnd* pParentWnd = NULL,
		DWORD dwSize = 0,
		BOOL bVistaStyle = TRUE);
CFileDialog构造函数中的参数说明
参数 描述
bOpenFileDialog如果值为TRUE,构造打开对话框;如果值为FALSE,构造另存为对话框
lpszDefExt用于确定文件默认扩展名,如果为NULL,没有扩展名被插入到文件名中
lpszFileName确定编辑框中初始化时的文件名称,如果为NULL,则编辑框中没有文件名称
dwFlags用于自定义"文件"对话框的样式
lpszFilter用于指定对话框过滤的文件类型
pParentWnd标识"文件对话框的父窗指针"
dwSize该值取决于操作系统版本。
MFC使用这个参数来确定适当的类来创建对话框
(例如,新的Windows 2000的对话框而不是NT4对话框)。
默认大小为0意味着MFC代码将确定正确的对话框的大小
使用基于操作系统版本上运行程序。
bVistaStyle注意这个参数在Visual Studio 2008之后可用后,
新型的对话框只在Windows Vista或之后可运行使用。
设置为TRUE使用新版本对话框风格,False使用旧的对话框风格.
























"文件"对话框常用的函数
函数描述
DoModal用于显示"文件"对话框,供用户选择文件
GetPathName用于返回用户选择文件的完整路径名称,包括文件的路径,文件名和文件扩展名
GetFileName用于返回用户选择的文件名称,包括文件名和扩展名,但不包含路径
GetFileExt用于返回"文件对话框"中输入的文件扩展名
GetFileTitle用于返回"文件"对话框中输入的文件名称,但不包含路径和扩展名
OnFileNameOK用于检查"文件"名称是否正确







CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR,
		L"所有图像文件(*.bmp; *.jpg)|*.bmp; *.jpg|所有文件(*.*)|*.*||");
	if (dlg.DoModal()==IDOK)
	{
		CString a = dlg.GetFileTitle();
		MessageBox(a);
	}


读取多个文件的方法

 //定制文件对话框
 CFileDialog dlg(TRUE, 
     "DEM Files (*DEM)", 
     NULL, 
     OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
     _T("Layer Files (*.DEM;*.TIFF;*.BMP;*.JPG)|*.DEM;*.TIFF;*.BMP;*.JPG;)||"),
     NULL);
 dlg.m_ofn.lpstrTitle="请加载相关图层";
 //最多可以打开100个文件
 dlg.m_ofn.nMaxFile = 100 * MAX_PATH;  
 dlg.m_ofn.lpstrFile = new TCHAR[dlg.m_ofn.nMaxFile];   
 ZeroMemory(dlg.m_ofn.lpstrFile, sizeof(TCHAR) * dlg.m_ofn.nMaxFile);  
 
 //显示文件对话框,获得文件名集合
 int retval = dlg.DoModal();
 if(retval==IDCANCEL)
  return false;
 POSITION pos_file;
 pos_file = dlg.GetStartPosition();
 CArray<CString, CString> ary_filename;
    while(pos_file != NULL)
  ary_filename.Add(dlg.GetNextPathName(pos_file));

 //根据扩展名读取相关文件
 for(int i=0; i<ary_filename.GetSize(); i++)
 {
  CString str_ext;
  str_ext = ary_filename.GetAt(i).Right(3);
  if((str_ext == "DEM")||(str_ext == "dem"))
  {
  }
  else if((str_ext == "TIFF")||(str_ext == "tiff"))
  {
  }
  else if((str_ext == "BMP")||(str_ext == "bmp"))
  {
  }
  else if((str_ext == "JPG")||(str_ext == "jpg"))
  {
  }
  else if((str_ext == "SHP")||(str_ext == "shp"))
  {
  }
 } 
 return true;



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值