alles zurücksetzen



  • hab mal wieder ne anfängerfrage:

    wie kann ich z.b. mit IDM_ZURUECKSETZEN alles zurücksetzen?
    so wie wenn ich das programm komplett neu starte.

    thx



  • So einfach ist das nicht! Das musst du schon alles selber machen. Ich schreibe mir in meinen Programmen fast immer eine init() funktion die Halt am Anfang des Programms aufgerufen wird und dann wenn ich es so haben will wie am Anfang. Dort initialiesiere ich halt alles nötige! Wo genau habberts denn bei dir, oder besser was willst du alles zurücksetzen?
    MfG schirrmie



  • ist eigentlich echt nicht viel ... ich muss ein paar variablen zurücksetzen. bei den globalen variablen ist das auch kein problem aber ich hab in

    LRESULT CALLBACK MainWndProc und in einem unterprogramm

    eine static vaiable drin (muss ich reinmachen, in unserem projekt für die FH muss alles bisher behandelte vorkommen) und ich hab keine ahnung wie ich die zurücksetzen soll.

    mfg



  • Mach die Variablen doch richtig global. Oder eine Fensternachricht WM_RESET_SETTINGS die dann alles zurücksetzt.



  • LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
       static int i = 0;
    
        switch(msg)
        {
            case WM_COMMAND:
                    switch(wParam)
                    {
                         case IDM_ZURUECKSETZEN:
                           { 
                              i = 0;
                              init();
                           }   
                           break;
                    }
                break;
    

    so 😃 😉

    wenn es nicht so viel ist poste mal deinen quellcode.



  • jiiiiha ... es funzt! - danke

    ihr scheint das ja echt aus dem ärmel zu schütten... jetzt muss ich nur noch wissen wie ich mein window beim zuruecksetzen wieder blank bekomme und alles 'gepaintete' weg ist. vorschläge?

    mfg
    pumkin



  • pumkin schrieb:

    jetzt muss ich nur noch wissen wie ich mein window beim zuruecksetzen wieder blank bekomme und alles 'gepaintete' weg ist.

    InvalidateRect(hwnd, NULL, true); übermalt den Fensterinhalt mit dem Hintergrundpinsel und sendet eine WM_PAINT Nachricht an das Fenster.

    (Eigentlich übermalt InvalidateRect das Fenster gar nicht, sondern sendet erst ein WM_ERASEBKGND und wenn du dieses nicht verarbeitest, übermalt DefWindowProc den Klientbereich des Fenster's mit dem Hintergrundpinsel)



  • D@niel $chumann schrieb:

    pumkin schrieb:

    jetzt muss ich nur noch wissen wie ich mein window beim zuruecksetzen wieder blank bekomme und alles 'gepaintete' weg ist.

    InvalidateRect(hwnd, NULL, true); übermalt den Fensterinhalt mit dem Hintergrundpinsel und sendet eine WM_PAINT Nachricht an das Fenster.

    Nicht direkt.

    The system sends a WM_PAINT message to a window whenever its update region is not empty and there are no other messages in the application queue for that window.



  • Hättest du wenigstens ersteres (siehe edit) bemängelt 🙄

    Nagut dann schreib noch ein UpdateWindow(hwnd) hinter InvalidateRect, dieses sendet dann auch sofort die WM_PAINT Nachricht.



  • danke an alle ... es funzt alles optimal.

    hoffe, dass ich so schnell keine fragen mehr habe.


Anmelden zum Antworten