先上例子代码,在一个MFC对话框程序中,添加如下代码,打开文件:
static TCHAR BASED_CODE szFilter[] = _T("image(*.bmp, *.jpg, *.png)|*.bmp;*.jpg;*.png|All Files (*.*)|*.*||");CFileDialog dlg(TRUE,"bmp", 0, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);dlg.DoModal();
微软对CFileDialog构造函数的原型:
explicit CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL,LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL,DWORD dwSize = 0,BOOL bVistaStyle = TRUE );参数: LPCTSTR lpszFilter = NULL, 即关于文件类型展现的过滤字符串
如上,对于szFilter的书写规则,决定着打开的对话框中,在选择框中选择(image(*.bmp, *.jpg, *.png) )时,对话框中文件类型的展现。在经过多次调试后发现规律。
1、szFilter中 如 image(*.bmp, *.jpg, *.png),出现在 “|”前,包含在括号中的内容为提示内容
2、提示内容后 且”|“后,对于出现在文件对话框中的文件类型, *.bmp;*.jpg;*.png 每个文件类型中间以分号”;“隔开