Setare extensie default pentru CFileDialog

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.

Setare extensie default pentru CFileDialog

Mesajde mesajflaviu » 12 Oct 2015, 11:40

Am derivate o clasa CFileDialogExt din CFileDialog, pentru a putea seta extensia default pentru un tip de fisier ales (la salvare) ... pentru asta, am suprascris CFileDialogExt::OnTypeChange() dupa cum urmeaza:
Cod: Selectaţi tot
void CFileDialogExt::OnTypeChange()
{
   // TODO: Add your specialized code here and/or call the base class

   CFileDialog::OnTypeChange();

   CString sExt(GetFileExt());

   switch(GetOFN().nFilterIndex)
   {
   case 1:
      sExt.Format(_T("bmp"));
      break;
   case 2:
      sExt.Format(_T("gif"));
      break;
   case 3:
      sExt.Format(_T("jpg"));
      break;
   case 4:
      sExt.Format(_T("png"));
      break;
   case 5:
      sExt.Format(_T("tiff"));
      break;
   }

   SetDefExt((LPCSTR)(LPCTSTR)sExt);
}

Toate bune si frumoase, dar extensia default se seteaza cu o alegere in urma ... adica:
pun un nume fiser: test
aleg extensia gif. - nu se intampla nimic.
aleg extensia jpg - numele fisierului se schimba in test.gif
aleg extensia png - numele fisierului se schimba in test.jpg

Baiu e ca nu am acces la combobox-ul de extensii, in cazul cand CFileDialog are VistaStyle ... atasez si un proiect de test, VS2008. Care ar putea fi solutia acestei probleme ?

P.S. Filtrul arata in felul urmator:
Cod: Selectaţi tot
   LPTSTR szFilter = _T("Bitmap Files (*.bmp)|*.bmp|Gif Files (*.gif)|*.gif|Jpeg Files (*.jpg)|*.jpg|Png Files (*.png)|*.png|Tiff Files (*.tiff)|*.tiff||");
   CFileDialogExt dlg(FALSE, NULL, NULL, OFN_FILEMUSTEXIST, szFilter);
Fişiere ataşate
TestFD.zip
(162.14 KiB) Descărcat de 631 ori
mesajflaviu
Membru++
Membru++
 
Mesaje: 674
Membru din: 10 Sep 2008, 21:40
Judet: Cluj

Înapoi la MFC, ATL, WTL si GDI+.

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator