MFC CFileDialog打开对话框时用lpstrFilter设置文件过滤器,不起作用。
代码如下:
void CHexMergeToolDlg::OnBnClickedButtonBoot()
{
// TODO: 在此添加控件通知处理程序代码
CString sEx; //扩展名
CString sPath,strTemp;
CFileDialog filedlg(true); //显示打开对话框
CFile file;
ULONGLONG filelength;
filedlg.m_ofn.lpstrTitle =_T("打开");
filedlg.m_ofn.lpstrFilter = _T("Hex Files(*.hex)/0*.hex/0/0");
if(IDOK == filedlg.DoModal())
{
sPath = filedlg.GetPathName();
sEx = filedlg.GetFileExt();
if(sEx != _T("hex"))
{
m_Boot = _T("");
SetDlgItemText(IDC_EDIT_Boot,m_Boot);
return;
}
file.Open(sPath, CFile::modeRead );
filelength = file.GetLength();
if(filelength > FILE_LENGTH_MAX) //文件超长
{
m_Boot = _T("");
SetDlgItemText(IDC_EDIT_Boot,m_Boot);
file.Close();
return;
}
m_Boot = sPath;
path_Boot = sPath;
strTemp.Format(_T("\r\n文件长度:%d字节"),filelength);
m_Boot += strTemp;
SetDlgItemText(IDC_EDIT_Boot,m_Boot);
file.Close();
}
}
把
filedlg.m_ofn.lpstrFilter = _T("Hex Files(*.hex)/0*.hex/0/0");
修改成:
filedlg.m_ofn.lpstrFilter = _T("Hex Files(*.hex)\0*.hex\0\0");
效果如下,可以实现只显示hex文件