引言:关于CFileDialog的文件过滤器的写法,看了几个博客感觉都是乱七八杂的,公司内部的前人写的也是有点乱。仔细查了查微软的写法,才发现其实有写的很清晰的格式。
个人技术博客(文章整理+源码): zobol的windows编程教程 | LearnWinAPI
最终效果:
1. 具体写法:
实际上,微软的文件过滤器就是一串字符串,每个小节直接用“|”隔开。文字说明1 | 后缀1 | 文字说明2 | 后缀2 | 文字说明3 | 后缀3
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
前面的“Chart Files (*.xlc)”其实都是给人眼看的,程序读取的都是后面的 *.xlc
源码:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter,NULL,NULL,1);
效果:
本人个人技术博客: zobol的windows编程教程 | LearnWinAPI
,个人公众号:zobol的魔法藏书室,windows编程技术讨论群:811851762。