zero_cool Geschrieben 18. November 2008 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
Pointerman Geschrieben 19. November 2008 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
AndiE Geschrieben 19. November 2008 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'
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden