引言:关于CFileDialog的文件过滤器的写法,看了几个博客感觉都是乱七八杂的,公司内部的前人写的也是有点乱。仔细查了查微软的写法,才发现其实有写的很清晰的格式。
个人技术博客(文章整理+源码): https://zobolblog.github.io/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);
效果:
本人个人技术博客: https://zobolblog.github.io/LearnWinAPI/ ,个人公众号:zobol的魔法藏书室,windows编程技术讨论群:811851762。
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/268421.html