Join fachinformatiker.de Forum Now
Ergebnis 1 bis 4 von 4

InvalidateRect richtig anwenden

Diskussion über InvalidateRect richtig anwenden in C++: Compiler, IDEs, APIs der Kategorie Programmierung; Hallo Leute, momentan werden alle meine Unterprogramme bild_zeichnen(hwnd, bildname); uhr_zeichnen(hwnd); zeiger_zeichnen(hwnd, zeitverschiebung); digitale_zeitanzeige(hwnd,staedtename); jede Sekunde gezeichnet. Gibt es auch die ...

  1. #1
    Reg.-Benutzer
    Reg.-Datum
    08.04.2012
    Beiträge
    15

    Standard InvalidateRect richtig anwenden

    Hallo Leute,
    momentan werden alle meine Unterprogramme

    bild_zeichnen(hwnd, bildname);
    uhr_zeichnen(hwnd);
    zeiger_zeichnen(hwnd, zeitverschiebung);
    digitale_zeitanzeige(hwnd,staedtename);

    jede Sekunde gezeichnet.
    Gibt es auch die Möglichkeit, dass bild_zeichnen(hwnd, bildname) und uhr_zeichnen(hwnd) nur einmal ausgeführt und die anderen beiden Funktionen jede Sekunde aktualisiert werden?



    LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {


    switch (msg) {


    case WM_PAINT:
    if (Schalter == 0)hintergrundbild_zeichnen(hwnd);

    else
    {
    hdc=BeginPaint(hwnd,&ps);

    bild_zeichnen(hwnd, bildname);
    uhr_zeichnen(hwnd);
    zeiger_zeichnen(hwnd, zeitverschiebung);
    digitale_zeitanzeige(hwnd,staedtename);

    EndPaint(hwnd,&ps);
    }
    break;

    case WM_SIZE:

    cxClient = LOWORD(lParam);
    cyClient = HIWORD(lParam);

    if (Schalter == 0)hintergrundbild_zeichnen(hwnd);


    SendMessage(hWndStatusbar,msg,wParam,lParam);
    InitializeStatusBar(hWndStatusbar,1);
    break;

    case WM_MENUSELECT:
    return MsgMenuSelect(hwnd,msg,wParam,lParam);


    case WM_COMMAND:
    HANDLE_WM_COMMAND(hwnd,wParam,lParam,MainWndProc_O nCommand);
    break;

    case WM_DESTROY:
    PostQuitMessage(0);
    KillTimer(hwnd, TIMER_1);
    break;
    case WM_TIMER:
    InvalidateRect(hwnd, NULL, TRUE);
    break;



    default:
    return DefWindowProc(hwnd,msg,wParam,lParam);
    }

    return 0;
    }


    SetTimer wird mithilfe eines Buttons in einer Maske aktiviert.

    Wäre super wenn mir jemand weiterhelfen könnte


  2. #2
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    9.409

    Standard

    Du könntest in WM_TIMER eine Variable setzen. In WM_PAINT kannst du dann diese Variable prüfen.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  3. #3
    Reg.-Benutzer
    Reg.-Datum
    08.04.2012
    Beiträge
    15

    Standard

    mir ist nicht ganz klar wie du das meinst.

    Ich kann in meinem WM_TIMER bspw.
    pruefer = 1 ;
    reinschreiben.
    Und vor dem bild_zeichnen und uhr_zeichnen prüfe ich ob diese Bedingung erfüllt ist?

    Leider funktioniert das nicht das nicht...

  4. #4
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    9.409

    Standard

    Zitat Zitat von Angeli Beitrag anzeigen
    Und vor dem bild_zeichnen und uhr_zeichnen prüfe ich ob diese Bedingung erfüllt ist?
    Genau. Außerdem solltest du nach der Prüfung die Variable wieder auf 0 setzen. Es geht darum, festzustellen, ob die WM_PAINT-Nachricht durch deinen Timer oder durch ein anderes Ereignis ausgelöst wurde.

    Zitat Zitat von Angeli Beitrag anzeigen
    Leider funktioniert das nicht das nicht...
    Siehe meine Signatur.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. sed auf mehrere Dateien anwenden?
    Von schrotob im Forum Linux + Unix
    Antworten: 1
    Letzter Beitrag: 31.01.2011, 14:05
  2. ISTLEER auf drei Zellen anwenden
    Von Ikaruga im Forum Anwendungssoftware
    Antworten: 6
    Letzter Beitrag: 04.02.2009, 14:39
  3. NTFS Berechtigung auf Computerobjekte anwenden???
    Von tuningmaster im Forum Windows Betriebssysteme
    Antworten: 2
    Letzter Beitrag: 15.12.2008, 14:23
  4. Update für 2 Tabellen anwenden
    Von KingOfQueens im Forum Datenbanken
    Antworten: 6
    Letzter Beitrag: 01.04.2008, 12:48
  5. wie kann man to_date anwenden
    Von abc1234 im Forum Datenbanken
    Antworten: 4
    Letzter Beitrag: 09.05.2003, 11:59