Foros del Web » Programación para mayores de 30 ;) » Programación General »

Porqué no se cargan las imagenes?

Estas en el tema de Porqué no se cargan las imagenes? en el foro de Programación General en Foros del Web. hola, estoy haciendo pruebas con la api de windows, trato de mostrar una imagen que cargo previamente, quiero trabajar con la memoria para modificar la ...
  #1 (permalink)  
Antiguo 26/06/2008, 04:56
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 21 años, 10 meses
Puntos: 8
Porqué no se cargan las imagenes?

hola, estoy haciendo pruebas con la api de windows, trato de mostrar una imagen que cargo previamente, quiero trabajar con la memoria para modificar la imagen y luego mostrarla. Bueno os pongo el codigo a ver si veis porque no se muestra la imagen.
Código PHP:
LRESULT CALLBACK WindowFunc(HWND hwndUINT messageWPARAM wParamLPARAM lParam)
{
   
OPENFILENAME fname;
   
char filename[64];

   switch(
message) {
      case 
WM_SIZE:
         {
         
coords.cx LOWORD(lParam);
         
coords.cy HIWORD(lParam);

         if(
hBitmap){ 
            if (
memDC) {
               
SelectObject(memDCmemBitmapOld);
               
DeleteObject(memBitmap);
               
DeleteDC(memDC);
            }

            
tempDC GetDC(hwnd);
            
memDC CreateCompatibleDC(tempDC);
            
memBitmap CreateCompatibleBitmap(tempDCcoords.cxcoords.cy);
            
SelectObject(memDCmemBitmap);
            
ReleaseDC(hwndtempDC);

            
RepintarImagen(hwnd);
            }
         break;
         }
      case 
WM_PAINT:
         
hdc BeginPaint(hwnd, &ps);
         
BitBlt(hdc00coords.cxcoords.cymemDC00SRCCOPY); //@@@ mejorar repintando solo el area invalidada
         
EndPaint(hwnd, &ps);
         break;
      case 
WM_COMMAND:
         switch(
LOWORD(wParam)) {
            case 
IDM_OPEN:

               
memset(&fname0sizeof(OPENFILENAME));
               
fname.lStructSize sizeof(OPENFILENAME);
               
fname.hwndOwner hwnd;
               
fname.lpstrFilter = ("Bitmap Files (*.bmp)\0*.bmp\0\0");
               
fname.nFilterIndex 1;
               
fname.lpstrFile fn;
               
fname.nMaxFile sizeof(fn);
               
fname.lpstrFileTitle filename;
               
fname.nMaxFileTitle sizeof(filename)-1;
               
fname.Flags OFN_FILEMUSTEXIST OFN_HIDEREADONLY;

               if(!
GetOpenFileName(&fname))
                  break;

               
hBitmap = (HBITMAP)LoadImage(NULLfnIMAGE_BITMAP00LR_LOADFROMFILE);
               
GetObject(hBitmapsizeof(BITMAP), &bm);

               
RECT rect;
               
GetClientRect(hwnd, &rect);

               
RepintarImagen(hwnd);
               
InvalidateRect(hwnd, &rectTRUE);
               break;
         }
         break;

      case 
WM_DESTROY//terminar el programa
         
if (memDC) {
            
SelectObject(memDCmemBitmapOld);
            
DeleteObject(memBitmap);
            
DeleteDC(memDC);
         }
         if (
hBitmap)
            
DeleteObject(hBitmap);
         
PostQuitMessage(0);
         break;

      default:
         return 
DefWindowProc(hwndmessagewParamlParam);
   }
   return 
0;
}

/******************************************************************************
Método: RepintarImagen
Función: Actualiza el memDC con la imagen cargada, teniendo en cuenta que la imagen debe estar centrada en la ventana. Tambien se tiene en cuenta el scroll y el zoom.
******************************************************************************/
void RepintarImagen(HWND hwnd){
   
HDC tempDC;
   
HBITMAP tempBitmapOrig;
   if((
bm.bmWidth > (coords.cx)) || (bm.bmHeight > (coords.cy))){
      
xCenter 0;
      
yCenter 0;
   }else{
      
xCenter = (coords.cx/2) - (bm.bmWidth/2);
      
yCenter = (coords.cy/2) - (bm.bmHeight/2);
   }

   
tempDC GetDC(hwnd);
   
tempBitmapOrig SelectObject(tempDChBitmap);
   
StretchBlt(memDCxCenteryCenter00tempDC00bm.bmWidth,bm.bmHeight,SRCCOPY);
   
SelectObject(tempDCtempBitmapOrig);
   
ReleaseDC(hwnd,tempDC);

__________________
Bicis nuevas y de segunda mano: Bicibid
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:23.