CFileDialog自动追加扩展名

第二个参数为nullptr时,则用户必须要输入文件扩展名,否则GetFileExt等方法将返回一个空字符串

	CString strFilterBwdp = _T("bwdp文件(bwdp)|*.bwdp|");
	CString strFilterPjte = _T("pjte文件(pjte)|*.pjte|");
	CString strFileFilter = strFilterBwdp + strFilterPjte;
	CFileDialog fileDlg(FALSE, NULL, prjParameter.GetProjectName() + L"造价接口文件", OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT, strFileFilter, NULL);
	CString strExt = fileDlg.GetFileExt();	// 获取为空

第二个参数默认扩展名与选择扩展名不同,或者默认的扩展名不在过滤器中,则GetFileExt等方法将返回过滤器第一个扩展名:

	CString strFilterBwdp = _T("bwdp文件(*.bwdp)|*.bwdp|");
	CString strFilterPjte = _T("pjte文件(*.pjte)|*.pjte|");
	CString strFileFilter = strFilterBwdp + strFilterPjte;
	CFileDialog fileDlg(FALSE, L"pjte", prjParameter.GetProjectName() + L"造价接口文件", OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT, strFileFilter, NULL);
	CString strExt = fileDlg.GetFileExt();		// 忽略默认扩展名,返回过滤器第一个扩展名

1、对于扩展名,以用户输入的扩展名为准,这个权重最高。
2、第二个参数nullptr时用户必须输入扩展名,对话框不会根据过滤器自动追加扩展名。
3、第二个参数只对"."过滤器才有意义。

所以如果我们需要根据过滤器自动追加扩展名的话,一般将第二个参数设置为空字符串L"",而不是nullptr即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值