zero_cool Geschrieben 18. November 2008 Teilen Geschrieben 18. November 2008 (bearbeitet) Hi Leute, wenn jemand weiss wisso dass hier nicht funkzioniert(dass Bild flickert immer) dann warhe ich ihm sehr dankbar, ok na dan hier ist der source code: LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc, hdcMem; HBITMAP hbmp, hbms; PAINTSTRUCT ps; BITMAP bitmap; static int poz=250,pol=2,obll=1,obld=1; switch (message) { case WM_CREATE: SetTimer (hwnd, ID_TIMER, 80, NULL) ; char xy[3]; return 0 ; case WM_TIMER : if(poz>450)pol=1; else if(poz<5)pol=2; InvalidateRect (hwnd, NULL, TRUE) ; return 0 ; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); hdcMem = CreateCompatibleDC(hdc); hbmp = CreateCompatibleBitmap(hdc, 500, 200); hbms = CreateCompatibleBitmap(hdc, 43, 42); hbmp = (HBITMAP)LoadImage(NULL, "slike/background.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if(pol==2){ switch (obld){ case 1: hbms = (HBITMAP)LoadImage(NULL, "slike/cream1D.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); obld+=1; break; case 2: hbms = (HBITMAP)LoadImage(NULL, "slike/cream2D.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); obld+=1; break; case 3: hbms = (HBITMAP)LoadImage(NULL, "slike/cream3D.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); obld=1; break;} itoa(poz,xy,10); poz+=5; } else if(pol==1){ switch (obll){ case 1: hbms = (HBITMAP)LoadImage(NULL, "slike/cream1L.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); obll+=1; break; case 2: hbms = (HBITMAP)LoadImage(NULL, "slike/cream2L.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); obll+=1; break; case 3: hbms = (HBITMAP)LoadImage(NULL, "slike/cream3L.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); obll=1; break;} itoa(poz,xy,10); poz-=5; } SelectObject(hdcMem, hbmp); BitBlt(hdc, 0, 0, 500, 200, hdcMem, 0, 0, SRCCOPY); SelectObject(hdcMem, hbms); BitBlt(hdc, poz, 125, 43, 42, hdcMem, 0, 0, SRCCOPY); TextOut(hdc, poz+10, 90,xy,strlen(xy)); DeleteObject(hbms); DeleteObject(hbmp); DeleteDC(hdcMem); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; Bearbeitet 18. November 2008 von zero_cool Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Moin! Bevor ich einen Tip zur Lösung gebe ersteinmal etwas allgemeines: Bitte versuch Groß-/Kleinschreibung und vernünftiges Deutsch zu benutzen. Diese Punkte erhöhen die Wahrscheinlichkeit einer Antwort in diesem Forum enorm. Nun zum Thema: -Du musst versuchen, das Kopieren der Bitmaps mit dem Bildaufbau synchronisieren. Stichwort vsync. Ich habe damit das letzte mal unter DOS gearbeitet und weiß nicht genau wie es in Windows funktionier, aber hier haben sich da einige Leute ausgetauscht: OnPaint requests not in sync with vsync - DevMaster.net Forums Allgemein zum Code: - Erstmal solltest Du die Bitmaps schon beim Start des Programmes in den Speicher laden. Dann musst Du später nur noch die geladenen Bmps umschalten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AndiE Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Hallo, kannst du mal beschreiben, was da normalerweise passieren soll. Wenn du alle 80ms den gesamten Bildschirm für ungültig erklärst, und somit neu zeichnest, flackern die Bitmaps. LG Andre' Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.