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;



你可能感兴趣的:(CFileDialog用法)