nur definierte Dateitypen öffnen



  • Hallo Leute,

    also Datei öffnen und speicher ist kein Thema mehr aber wie mache ich das wenn ich nur Dateien des Typs *.txt öffnen und auch speichern möchte.

    Ich möchte gerne in meinem Open und Save Dialog die Dateitypen "alle" und "*.txt" auswählen können.

    Das hat doch bestimmt schonmal jemand gemacht, die Borland Hilfe versagt hier total.



  • Das gehört in eines der Fachforen, entweder WinAPI, MFC, VCL oder Linux.

    Ich nehme mal an du willst das in WinAPI machen.
    Das geht so:

    void Save()
    {
        TCHAR szBuffer[MAX_PATH] = TEXT("*.txt");
        OPENFILENAME ofn;
        ZeroMemory(&ofn, sizeof(OPENFILENAME));
        ofn.lStructSize  = sizeof(OPENFILENAME);
        ofn.hwndOwner    = GetHwnd(); // Dein Hauptfenster
        ofn.lpstrFilter  = TEXT("Textdatei (*.txt)\0*.txt\0\0");
        ofn.nFilterIndex = 1;
        ofn.lpstrFile    = szBuffer;
        ofn.nMaxFile     = MAX_PATH;
        ofn.lpstrDefExt  = TEXT("txt");
        ofn.Flags        = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
    
        if(GetSaveFileName(&ofn))
        {
            // Der gültige Dateiname steht in ofn.lpstrFile;
        }
    }
    

    Laden geht fast genauso:

    void Load()
    {
        TCHAR szBuffer[MAX_PATH] = TEXT("*.txt");
        OPENFILENAME ofn;
        ZeroMemory(&ofn, sizeof(OPENFILENAME));
        ofn.lStructSize  = sizeof(OPENFILENAME);
        ofn.hwndOwner    = GetHwnd();
        ofn.lpstrFilter  = TEXT("Textdatei (*.txt)\0*.ptf\0\0");
        ofn.nFilterIndex = 1;
        ofn.lpstrFile    = szBuffer;
        ofn.nMaxFile     = MAX_PATH;
        ofn.lpstrDefExt  = TEXT("txt");
        ofn.Flags        = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    
        if(GetOpenFileName(&ofn))
        {
            // Der gültige Dateiname steht wieder in ofn.lpstrFile;
        }
    }
    


  • Achso, du wolltest noch den Auswahlpunkt "alle" haben. Das geht ganz einfach, das kannst du dir selber machen.
    Der Filter müsste so aussehen:

    ofn.lpstrFilter = TEXT("Textdatei (*.txt)\0*.txt\0Alle Typen\0*.*\0");
    


  • Fachforen

    Fachforen? Wie edel. 🕶



  • cd9000 , vielen vielen Dank !!!, Du bist mein Retter, es funktioniert.

    Wo das hingehört, da hab ich immer so meine schwierigkeit, bin ja schließlich noch im Lernstadium, aber ich werde mich dran halten.

    Danke nochmal !!!


Anmelden zum Antworten