Page 1 of 1

problema llamando png desde recursos

PostPosted: Mon Apr 29, 2013 11:05 am
by mastintin
Estoy colocando este código para poder llamar desde recursos los png ( en la clase bitmap ) , pero ::hBitmap = FWPngFromMemory(a_resHandle) de devuelve 0

creo que estoy pasando el puntero del array en vez el array ¿ como funcionaría ?


Code: Select all  Expand view

  IF ( hRes:= FindResource( GetResources(), cResName , RT_RCDATA ) ) != 0
          IF ( a_resHandle := LoadResource( GetResources(),  hRes ) ) != 0
            pausa(1)
            ::hBitmap  = FWPngFromMemory(a_resHandle)
             pausa( ::hBitmap )
             pausa("png")

           ::hPalette = 0
           lChanged  := .t.
           cBmpFile  := nil


         endif
 endif
 

Re: problema llamando png desde recursos

PostPosted: Mon Apr 29, 2013 7:52 pm
by Antonio Linares
Manuel,

LoadResource() devuelve un handle ( HGLOBAL ) que FWH devuelve como un número.

Asi que tu función lo que recibe es un número y no un array. Solo tienes que modificar la función FWPngFromMemory() para que reciba un número ( hb_parnl() )

Re: problema llamando png desde recursos

PostPosted: Mon Apr 29, 2013 8:16 pm
by Patricio Avalos Aguirre
Antono


November 2011
=============
+ new function FWPngFromMemory( <Bytes> ) Open a png File from array bytes <Bytes> return a bitmap handle


FWPngFromMemory no viene el fuente, esta en la libreria FIVEHC.LIB

Re: problema llamando png desde recursos

PostPosted: Tue Apr 30, 2013 8:09 am
by mastintin
De momento lo he resuelto asi :

viewtopic.php?f=6&t=26183#p143801

Tiene razón Patricio , no disponemos de FWPngFromMemory() para cambiarla porlo que sería bueno tener una funcion que rescatase los png desde recursos directamente .

Patricio Avalos Aguirre wrote:Antono


November 2011
=============
+ new function FWPngFromMemory( <Bytes> ) Open a png File from array bytes <Bytes> return a bitmap handle


FWPngFromMemory no viene el fuente, esta en la libreria FIVEHC.LIB

Re: problema llamando png desde recursos

PostPosted: Tue Apr 30, 2013 8:57 am
by Antonio Linares
Este es el código de la función:

Code: Select all  Expand view
HB_FUNC( FWPNGFROMMEMORY )
{

   PFWPNG pPng = ( PFWPNG ) hb_xgrab( sizeof( FWPNG ) );
   HB_FHANDLE Info = ( HB_FHANDLE ) hb_parc( 1 );
   
   ReadFromMemory( pPng, Info );
   
   hb_retnl( ( LONG ) pPng->hBitmap );
   hb_xfree( pPng->image_data );
   hb_xfree( pPng->row_pointers );
   hb_xfree( pPng );
   
}


Creo que este código lo desarrolló Daniel, y actualmente está de viaje. Yo creo que tiene un error, y que debiera ser hb_parnl( 1 ) en vez de hb_parc( 1 ), por si te animas a probarlo. O tal vez, hb_parptr( 1 )

Re: problema llamando png desde recursos

PostPosted: Thu May 02, 2013 4:15 pm
by mastintin
Añadida la function al final de tbitmap.prg lanza los errores de abajo .... me faltan cosas para que compile.

Code: Select all  Expand view



#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>
#include <hbdefs.h>

HB_FUNC( FWPNGFROMMEMORY )
{

   PFWPNG pPng = ( PFWPNG ) hb_xgrab( sizeof( FWPNG ) );
   HB_FHANDLE Info = ( HB_FHANDLE ) hb_parc( 1 );

   ReadFromMemory( pPng, Info );
   
   hb_retnl( ( LONG ) pPng->hBitmap );
   hb_xfree( pPng->image_data );
   hb_xfree( pPng->row_pointers );
   hb_xfree( pPng );
   
}

 #pragma ENDDUMP

 



Obj\bitmap.c:
Error E2451 bitmap.prg 1112: Undefined symbol 'PFWPNG' in function HB_FUN_FWPNGFROMMEMORY
Error E2379 bitmap.prg 1112: Statement missing ; in function HB_FUN_FWPNGFROMMEMORY
Error E2140 bitmap.prg 1113: Declaration is not allowed here in function HB_FUN_FWPNGFROMMEMORY
Error E2451 bitmap.prg 1115: Undefined symbol 'pPng' in function HB_FUN_FWPNGFROMMEMORY
Warning W8065 bitmap.prg 1115: Call to function 'ReadFromMemory' with no prototype in function HB_FUN_FWPNGFROMMEMORY