Evitando di ridisegnare lo sfondo si vede comunque un po' "a scatti", comunque cercando un po' sul web ho visto che esiste il doppio buffering per le GDI, ma non ho capito come usarlo... Il codice è questo:
codice:
// 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, TRUE);
UpdateWindow(hwnd);
come si può trasformare in modo che funzioni con il boppio buffering?