Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

double buffer

Empfohlene Antworten

Veröffentlicht

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 von zero_cool

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

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'

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.