• Domingo 11 de Mayo de 2025, 08:39

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - zeroz

Páginas: [1]
1
Programación de Videojuegos / Doble Buffer No Me Funciona
« en: Lunes 9 de Junio de 2008, 11:39 »
hola, estoy empezando con unos tutoriales del api de windows para luego adentrarme en  las directx o winapi + c++, bueno pues en un ajercicio tengo que cargar una imagen y que siempre este en el centro aunque la pantalla cambie de tamaño, todo va bien menos el doble buffering que no consigo implementarlo, alguien sabe donde esta el error?

Código: Text
  1.  
  2. case WM_SIZE:
  3.          GetClientRect(hwnd, &coords);
  4.  
  5.          InvalidateRect(hwnd, NULL, FALSE);
  6.          break;
  7.       case WM_PAINT:
  8.          hBitmap = (HBITMAP)LoadImage(NULL, fn, IMAGE_BITMAP, ancho, alto, LR_LOADFROMFILE); //carga el bmp desde el disco
  9.          if( hBitmap == NULL )
  10.             return FALSE;
  11.                
  12.          xCenter = ((coords.right - coords.left)/2) - (bm.bmWidth/2);
  13.          yCenter = ((coords.bottom - coords.top)/2) - (bm.bmHeight/2);
  14.          hdc = BeginPaint( hwnd, &ps );  
  15.  
  16.          GetObject(hBitmap, sizeof(BITMAP), &bm);
  17.  
  18.          memDC = CreateCompatibleDC(hdc);
  19.          hBitmapBuffer = CreateCompatibleBitmap(hdc, bm.bmWidth, bm.bmHeight);
  20.  
  21.          hBitmapOld = SelectObject( memDC, hBitmapBuffer );
  22.  
  23.  
  24.          BitBlt( hdc, xCenter, yCenter, bm.bmWidth, bm.bmHeight, memDC, 0, 0, SRCCOPY );
  25.  
  26.          SelectObject( memDC, hBitmapOld );
  27.          DeleteObject( hBitmap );
  28.          EndPaint( hwnd, &ps );
  29.          DeleteObject(memDC);
  30.  
  31.          break;
  32.  
  33.  

Páginas: [1]