Oppure

Loading
08/08/12 23:15
giorgio_kollias
Salve a tutti, ho creato un piccolo programma che esegue lo scrolling continuo di uno sfondo, ma c'era sempre il problema del flickering. Ho provato ad evitare di ridisegnare, stampando semplicemente la bitmap sopra quella esistente, ma si vede comunque un po' "a scatti", e cercando un po' sul web ho visto che la soluzione per il mio problema è il doppio buffering, ma non ho capito come usarlo... Il codice è questo:

// Nel WinMain

SetTimer(hwnd,101,1,Scroll);

//Nella WindowProcedure

case WM_PAINT:
    wDC = BeginPaint(hwnd, &wps);
    hMemDC = CreateCompatibleDC(wDC);
    SelectObject(hMemDC, BitBackG);
    GetObject(BitBackG, sizeof(bm), &bm);
    Width=bm.bmWidth+(WLimits.bottom-bm.bmHeight);
    if(Width<WLimits.right) Width=WLimits.right;
    StretchBlt(wDC, BackGx, 0, Width, WLimits.bottom, hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
    StretchBlt(wDC, BackGx+Width, 0, Width, WLimits.bottom, hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
    DeleteDC(hMemDC);
    EndPaint(hwnd, &wps);
    break;

// Funzione Scroll

  BackGx-=5;
  if(BackGx<-Width) BackGx=0;
  InvalidateRect(hwnd, &WLimits, FALSE);
  UpdateWindow(hwnd);



come si può trasformare in modo che funzioni con il doppio buffering?
Ultima modifica effettuata da giorgio_kollias 08/08/12 23:16
aaa