Erweiterungen für "Speichern-Dilaog" festlegen



  • Hallo

    Ich öffne mitels

    CFileDialog Dialog(FALSE);
    if(Dialog.DoModal() == IDOK)
    

    einen Dilaog und würde bei diesem gerne vorher die Dateierweiterung festlegen. Wie geht das?

    Vielen Dank

    chrische



  • Wenn Du unter Dateierweiterung dasselbe verstehst wie ich unter Dateiendung:
    Damit hatte ich auch einige Zeit Probleme. Nachdem einiges andere nicht funktionierte, klappte schließlich:

    CFileDialog schreibdialog(FALSE,static_cast<LPCTSTR>(L"txt"),static_cast<LPCTSTR>(L"vorgeschlagener Name"),OFN_EXPLORER,static_cast<LPCTSTR>(L"Textdatei (*.txt) |*.txt|Textdatei (*.dat) |*.dat|alle Dateien (*.*) |*.*|" ));
    

  • Mod

    dong schrieb:

    CFileDialog schreibdialog(FALSE,static_cast<LPCTSTR>(L"txt"),static_cast<LPCTSTR>(L"vorgeschlagener Name"),OFN_EXPLORER,static_cast<LPCTSTR>(L"Textdatei (*.txt) |*.txt|Textdatei (*.dat) |*.dat|alle Dateien (*.*) |*.*|" ));
    

    Diese cast's sind alle Überflüssig und würden in enem MBCS Programm zur Fehlfunktion führen.
    Einfach nur _T Makros verwenden:

    CFileDialog schreibdialog(FALSE,_T("txt"),_T("vorgeschlagener Name"),OFN_EXPLORER,_T("Textdatei (*.txt) |*.txt|Textdatei (*.dat) |*.dat|alle Dateien (*.*) |*.*|" ));
    


  • Danke für die Infformation!
    Ist aus ähnlichen Gründen das _T Makro auch dem T Makro vorzuziehen,
    ist also z.B. MessageBox(_T("Text")); besser als MessageBox(L"Text"); ?


  • Mod

    dong schrieb:

    Danke für die Infformation!
    Ist aus ähnlichen Gründen das _T Makro auch dem T Makro vorzuziehen,
    ist also z.B. MessageBox(_T("Text")); besser als MessageBox(L"Text"); ?

    Zweiteres geht nur bei einem Unicode build erstes geht für MBCS und Unicode.

    Weiterer Tip: AfxMessaageBox ist auch der Funktion MessageBox vorzuziehen, da AfxMessageBix zentralere Funktionen bietet und auch sicherer das aktuelle Fenster disabled/enabled.

    Meiner Meinung nach hätte MessageBox direkt in der nachfolge Version von MFC 1.0 entfernt werden müssen, aber ist aus Kompatibilität drin geblieben.



  • Danke!


Anmelden zum Antworten