Antonio , versi贸n mejorada , ahora funciona tambien desde recursos , usa freeimage ,ser铆a mejor no usarlo pero de momento nos puede servir ...
METHOD LoadImage( cResName, cBmpFile ) CLASS TBitmap
local lChanged := .f.
local hBmpOld := ::hBitmap
local hPalOld := ::hPalette
local aBmpPal
DEFAULT cResName := ::cResName, cBmpFile := ::cBmpFile
if ! Empty( cResName )
IF FindResource( GetResources(), cResName , RT_RCDATA ) != 0
::hBitmap:= FILoadFromMemory( cResToStr( cResName, RT_RCDATA ), RT_RCDATA )
::hPalette = 0
lChanged := .t.
cBmpFile := nil
ELSE
aBmpPal = PalBmpLoad( cResName )
::hBitmap = aBmpPal[ 1 ]
::hPalette = aBmpPal[ 2 ]
lChanged := .t.
cBmpFile := nil
endif
elseif File( cBmpFile )
IF upper(right(cBmpFile,3))="PNG"
::hBitmap = FWOpenPngFile( cBmpFile )
::hPalette = 0
else
aBmpPal = PalBmpRead( ::GetDC(), AllTrim( cBmpFile ) )
::hBitmap = aBmpPal[ 1 ]
::hPalette = aBmpPal[ 2 ]
::ReleaseDC()
lChanged := .t.
cResName := nil
endif
endif
if lChanged
::cResName = cResName
::cBmpFile = cBmpFile
if ! Empty( hBmpOld )
PalBmpFree( hBmpOld, hPalOld )
endif
PalBmpNew( ::hWnd, ::hBitmap, ::hPalette )
endif
::HasAlpha()
return lChanged