FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Mejora en Metodo de btnbmp
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Mejora en Metodo de btnbmp
Posted: Thu May 02, 2013 03:17 PM
Para poder usar png tanto desde recursos como desde archivos .

Code (fw): Select all Collapse
METHOD LoadBitmaps( cResName1, cResName2, cBmpFile1, cBmpFile2,;
                    cResName3, cBmpFile3, cResName4, cBmpFile4 ) CLASS TBtnBmp

  local aBmpPal

  if ! Empty( cResName1 )
     IF  FindResource( GetResources(), cResName1 , 10 )  != 0
         ::hBitmap1  =  FILoadFromMemory( cResToStr( cResName1, 10 ), 10 )
         ::hPalette1 = 0
     ELSE
        aBmpPal = PalBmpLoad( cResName1 )
        ::hBitmap1  = aBmpPal[ 1 ]
        ::hPalette1 = aBmpPal[ 2 ]
     endif
     ::HasAlpha( ::hBitmap1, BTN_UP )
  endif

  if ! Empty( cResName2 )
   IF  FindResource( GetResources(), cResName2 , 10 )  != 0
         ::hBitmap2  =  FILoadFromMemory( cResToStr( cResName2, 10 ), 10 )
         ::hPalette2 = 0
     ELSE
         aBmpPal = PalBmpLoad( cResName2 )
         ::hBitmap2  = aBmpPal[ 1 ]
         ::hPalette2 = aBmpPal[ 2 ]
     endif
      ::HasAlpha( ::hBitmap2, BTN_DOWN )
   endif

   if ! Empty( cResName3 )
     IF  FindResource( GetResources(), cResName3 , 10 )  != 0
         ::hBitmap3  =  FILoadFromMemory( cResToStr( cResName3, 10 ), 10 )
         ::hPalette3 = 0
     ELSE
         aBmpPal = PalBmpLoad( cResName3 )
         ::hBitmap3  = aBmpPal[ 1 ]
         ::hPalette3 = aBmpPal[ 2 ]
     endif
     ::HasAlpha( ::hBitmap3, BTN_DISABLE )
   endif

   if ! Empty( cResName4 )
     IF  FindResource( GetResources(), cResName4 , 10 )  != 0
         ::hBitmap4  =  FILoadFromMemory( cResToStr( cResName4, 10 ), 10 )
         ::hPalette4 = 0
     ELSE
         aBmpPal = PalBmpLoad( cResName4 )
         ::hBitmap4  = aBmpPal[ 1 ]
         ::hPalette4 = aBmpPal[ 2 ]
     endif
     ::HasAlpha( ::hBitmap4, BTN_OVERMOUSE )
   endif

   if ! Empty( cBmpFile1 )
      if File( cBmpFile1 )
         ::cBmpFile1 = cBmpFile1
         IF upper(right(cBmpFile1,3))="PNG"
            ::hBitmap1  = FWOpenPngFile( cBmpFile1 )
            ::hPalette1 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile1 )
            ::hBitmap1  = aBmpPal[ 1 ]
            ::hPalette1 = aBmpPal[ 2 ]
         endif
         ::HasAlpha( ::hBitmap1, BTN_UP )
         ::ReleaseDC()
      endif
   endif

   if ! Empty( cBmpFile2 )
      if File( cBmpFile2 )
         ::cBmpFile2 = cBmpFile2
         IF upper(right(cBmpFile2,3))="PNG"
            ::hBitmap2  = FWOpenPngFile( cBmpFile2 )
            ::hPalette2 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile2 )
            ::hBitmap2  = aBmpPal[ 1 ]
            ::hPalette2 = aBmpPal[ 2 ]
         endif
         ::HasAlpha( ::hBitmap2, BTN_DOWN )
         ::ReleaseDC()
      endif
   endif

   if ! Empty( cBmpFile3 )
      if File( cBmpFile3 )
         ::cBmpFile3 = cBmpFile3
         IF upper(right(cBmpFile3,3))="PNG"
            ::hBitmap3  = FWOpenPngFile( cBmpFile3 )
            ::hPalette3 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile3 )
           ::hBitmap3  = aBmpPal[ 1 ]
           ::hPalette3 = aBmpPal[ 2 ]
         endif
         ::HasAlpha( ::hBitmap3, BTN_DISABLE )
         ::ReleaseDC()
      endif
   endif

   if ! Empty( cBmpFile4 )
      if File( cBmpFile4 )
         ::cBmpFile4 = cBmpFile4
         IF upper(right(cBmpFile4,3))="PNG"
            ::hBitmap4  = FWOpenPngFile( cBmpFile4 )
            ::hPalette4 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile4 )
           ::hBitmap4  = aBmpPal[ 1 ]
           ::hPalette4 = aBmpPal[ 2 ]
         endif
         ::HasAlpha( ::hBitmap4, BTN_OVERMOUSE )
         ::ReleaseDC()
      endif
   endif


   if ! Empty( ::hBitmap1 )
      PalBmpNew( ::hWnd, ::hBitmap1, ::hPalette1 )

   endif

   if ! Empty( ::hBitmap2 )
      PalBmpNew( ::hWnd, ::hBitmap2, ::hPalette2 )
   endif

   if ! Empty( ::hBitmap3 )
      PalBmpNew( ::hWnd, ::hBitmap3, ::hPalette3 )
   endif

   if ! Empty( ::hBitmap4 )
      PalBmpNew( ::hWnd, ::hBitmap4, ::hPalette4 )
   endif

return nil
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Mejora en Metodo de btnbmp
Posted: Fri May 03, 2013 03:55 PM
Hola Mistintin

has revisado el codigo

creo que releaseDC es solo cuando es archivo BMP

Code (fw): Select all Collapse
if ! Empty( cBmpFile1 )
聽 聽 聽 if File( cBmpFile1 )
聽 聽 聽 聽 聽::cBmpFile1 = cBmpFile1
聽 聽 聽 聽 聽IF upper(right(cBmpFile1,3))="PNG"
聽 聽 聽 聽 聽 聽 ::hBitmap1 聽= FWOpenPngFile( cBmpFile1 )
聽 聽 聽 聽 聽 聽 ::hPalette1 = 0
聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 aBmpPal 聽 聽 = PalBmpRead( ::GetDC(), cBmpFile1 )
聽 聽 聽 聽 聽 聽 ::hBitmap1 聽= aBmpPal[ 1 ]
聽 聽 聽 聽 聽 聽 ::hPalette1 = aBmpPal[ 2 ]
聽 聽 聽 聽 聽 聽//ya que aqui se establece el ::GETDC
聽 聽 聽 聽 聽 聽 ::ReleaseDC()
聽 聽 聽 聽 聽endif
聽 聽 聽 聽 聽::HasAlpha( ::hBitmap1, BTN_UP )
// 聽 聽 聽 聽 ::ReleaseDC() aqui no va ya que si en PNG no hay ::GETDC
聽 聽 聽 endif
聽 聽endif
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Mejora en Metodo de btnbmp
Posted: Fri May 03, 2013 04:39 PM
Patricio Avalos Aguirre wrote:Hola Mistintin

has revisado el codigo

creo que releaseDC es solo cuando es archivo BMP



Tienes raz贸n , lo cambio en mi c贸digo" . Gracias por la observaci贸n . :-)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Mejora en Metodo de btnbmp
Posted: Fri May 03, 2013 05:40 PM

Manuel,

A帽adido para el pr贸ximo build, gracias! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion