Veröffentlicht 27. Mai 201213 j 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_OnCommand); 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:)
28. Mai 201213 j Du könntest in WM_TIMER eine Variable setzen. In WM_PAINT kannst du dann diese Variable prüfen.
31. Mai 201213 j 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...
31. Mai 201213 j 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. Leider funktioniert das nicht das nicht...Siehe meine Signatur.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.