Status von bool's



  • Hallöle...

    Ich hab nen kleines (für mich großes prob.)
    Ich hab ne Autocheckbox in meinem prog nun will ich den Zustand der Checkbox in einer externen Datei speichern, so dass wenn ich das programm erneut starte der alte zustand wieder hergestellt ist.
    Wenn ich dann z.B. das prog schließe wenn die Checkbox "gecheckt" ist, soll das prog beim neustart gleich die Checkbox "checken".

    mhh ich hoffe es versteht mich einer...
    wenn nicht, dann poste mal eure Fragen. Dann kann ich vielleicht das speziel nochmal probieren mein Prob deutlichzumachen.

    THX schonmal vorwech...

    cu all
    Laubi



  • Ist dein Problem beim Auslesen der Checkbox oder beim schreiben des bool wertes in eine Datei bzw. die Registry?



  • und wo liegt das problem?
    Stell dir am besten ne struct mit alle Programmeinstellungen zusammen, schreibe sie beim beenden in ein file und lade sie bei starten.

    bsp:

    typedef struct
    {
    bool bCheckbox1;
    bool bCheckbox2;
    bool bCheckbox3;
    } APP_SETTINGS;
    
    // Programmstart:
    APP_SETTINGS settings;
    FILE *file = fopen( strFile, "r" );
    fread(&settings,sizeof(settings),1,file);
    fclose(file);
    // in settings hast du nun alles was du brauchst 
    
    // Programmende:
    APP_SETTINGS settings;
    FILE *file = fopen( strFile, "w" );
    fwrite(&settings,sizeof(settings),1,file);
    fclose(file);
    

    [ Dieser Beitrag wurde am 13.01.2003 um 16:24 Uhr von CMatt editiert. ]



  • hoi flenders:

    eigentlich beim auslesen der datei und bei der daraus resultierenden zuweisung des zustandes beim erneuten starten...

    den zustand frage mit ne funktion ab:

    if(SendMessage (hwnd_CheckBox, BM_GETCHECK, BST_CHECKED, 0)) {...}
    

    damit frage ich ja nach ob die Checkbox "checked" ist.
    Das schreiben in die datei wollte ich mit

    fputs(...)
    

    und Co machen.
    ich glaube, dass das soweit möglich ist

    glaube ist was für theologen...

    Mein eigentliches prob ist, wie bekomme ich die daten aus der datei ins prog zurück ?
    Also wenn in der Datei z.B. steht: Checkbox CHECKED
    wie kann ich diesen zustand der Checkbox zuweisen ?

    Ich hoffe es war etwas verständlicher.

    cu
    Laubi



  • @ CMatt:

    ich wollte dein code testen und hab das alles eingetragen...
    1. ich hab in der header das struct erstellt.
    2. hab ein objekt erzeugt.
    3. hab den fopen usw. in dem WM_COMMAND eingetragen, gibt nen fehler

    F:\C++\Visual\windows_window\window1.cpp(841) : error C2360: Initialisierung von 'file' durch 'case'-Marke übersprungen
    F:\C++\Visual\windows_window\window1.cpp(835) : Siehe Deklaration von 'file'

    hab keine plan was das bedeutet. :*(

    kannste mir da weiterhelfen ?

    danke

    cu Laubi



  • Dafür gibt es die Message BM_SETTEXT: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/buttonreference/buttonmessages/bm_setcheck.asp

    Wenn du aber wissen willst, wie du das wieder aus der Datei auslesen kannst, dann schau mal in die C++-FAQ, da steht ein Artikel dazu (ich glaub der heisst "Ströme und Dateien in C++").

    cya 🙂



  • dann must du um den Code-Block { } rum machen!



  • ok...
    nun hab ich auch den Code-Block drumgemacht.
    jetzt läuft das prog auch...aber erschreibt in die data.txt nur ne rechteck. Und das auslesen funzt auch net...ich schau gleich mal in faq rein...
    aber wenn ihr noch was wisst, bidde posten...

    cu Laubi



  • das du die Datei nicht mit Notepad lesen kannst ist klar!
    Was genau klappt denn beim Auslesen nicht? Hast du deine Checkboxen auch entsprechend den eingelesenen Bool-Werten wieder gesetzt?!



  • Ich probiere mal nen etwas längern post um auch die arbeitweise des prog klarzumachen.

    Header:
    Hier steht die Struktur APP_SETTINGS
    CPP:
    ich erstelle ein objekt der struktur.
    ich erstelle eine checkbox mit CreateWindowEx() im case WM_CREATE.
    desweiteren erstelle ich nen button auch mit CreateWindowEx() im case WM_CREATE.

    in der WM_COMMAND ist das case ID_PUSHBUTTON01:

    case ID_PUSHBUTTON01:
                {
    
                if(SendMessage (hwnd_CheckBox10, BM_GETCHECK, BST_CHECKED, 0))
                    settings.bCheckbox1 = TRUE;
    
                FILE *file = fopen( strFile, "w" );
                fwrite(&settings,sizeof(settings),1,file);
                fclose(file);
    
                return 0;
                }
    

    nun sollte ja in der txt irgendwie sowas wie true stehen. kann man zwar nicht lesen.

    in WM_MOVE steht der Code zum auslesen.

    case WM_MOVE:
    
            if(prog_start)
            {
                FILE *file = fopen( strFile, "r" );
                fread(&settings,sizeof(settings),1,file);
                fclose(file);
            }
    

    nun wird die checkbox aber nicht mit dem hacken angezeigt.

    ich hoffe es hilft euch weiter...



  • tja man sollte vielleicht noch den status der variablen an die checkbox weitergeben...*rotwerd*

    ihr habt mir ALLE sehr geholfen...

    jetzt funst das auch *freu*

    bis denn Laubfrosch


Anmelden zum Antworten