方法1、通过CFileDialog.m_ofn.nFilterIndex过滤器编号来区分当前选择的扩展名
CFileDialog fileDialog(FALSE, NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,\
_T("DataFile(*.tif)|*.tif|Data File(*.sct)|*.sct||"),this);
if(fileDialog.DoModal()==IDOK)
{
if (fileDialog.m_ofn.nFilterIndex == 1)
{
//tif
}
else if (fileDialog.m_ofn.nFilterIndex == 2)
{
//sct
}
}
方法2、通过GetSaveFileName函数,追加扩展名,第二个参数不能为NULL,可以是L""
CFileDialog fileDialog(FALSE,L"",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,\
_T("DataFile(*.tif)|*.tif|Data File(*.sct)|*.sct||"),this);
if(fileDialog.DoModal()==IDOK)
{
GetSaveFileName(&fileDialog.m_ofn);
//获取扩展名,没有‘.’
fileDialog.GetFileExt();
}
方法3、重写CFileDialog 中的OnInitDialog和OnTypeChange函数
BOOL CFileDialogEx::OnInitDialog()
{
CFileDialog::OnInitDialog();
SetDefExt("tif");
returnTRUE; // return TRUE unless you set thefocus to a control
}
void CFileDialogEx::OnTypeChange()
{
intn=m_ofn.nFilterIndex;
if(n==1)
{
SetDefExt(("tif"));
}
elseif (n==2)
{
SetDefExt(("sct"));
}
CFileDialog::OnTypeChange();
}
CFileDialogEx fileDialog(FALSE,L"",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,\
_T("DataFile(*.tif)|*.tif|Data File(*.sct)|*.sct||"),this);
if(fileDialog.DoModal()==IDOK)
{
//获取扩展名,没有‘.’
fileDialog.GetFileExt();
}