msgsplash alpha bitmap

msgsplash alpha bitmap

Postby DiGregorio » Thu Jul 16, 2009 8:00 pm

Antonio, extraño no?

Estuve trabajando la funcion msgsplash() con un bitmap alpha channel, y consegui un posible error que no se si solo me sucede a mi:

Cuando esta en la pantalla el bitmap los "n" segundos que determines en la funcion, si pasas el mouse por encima de la imagen cuando esta aparece al iniciar el programa, esta imagen se va desvaneciendo y va apareciendo lo que estaba detras del bitmap.

Nota Importante: no lo hace si detras de la imagen tenemos solo el escritorio de Windows, solo lo hace si detras de la imagen tenemos programas abiertos, como por ejemplo si tenemos un dialogo de MI PC abierto y desde alli ejecutamos nuestro programa con el msgsplash la imagen aparece sin problemas y se ve muy bien, pero si pasamos el mouse encima de ella, se va desvaneciendo y van apareciendo las imagens del dialogo de MIPC, mientras que si tenemos un acceso directo en el escritorio de Windows y ejecutamos el programa, la imagen bitmap aparece directamente sobre el escritorio de Windows y al pasar el mouse la imagen pertenece intacta.

Image

Utilizo Windows Vista Ultimate

Gracias.
FWH/FWHX 9.10 + Harbour + xMate 1.5

Domenico Di Gregorio
Italia - Venezuela
stePyme 1.0
User avatar
DiGregorio
 
Posts: 42
Joined: Fri Nov 04, 2005 12:22 am
Location: Ven - Ita

Re: msgsplash alpha bitmap

Postby MGA » Thu Aug 11, 2011 12:20 pm

Domenico,

Estou com o mesmo problema, conseguiu alguma solução para o problema ?

Muito obrigado
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Re: msgsplash alpha bitmap

Postby Antonio Linares » Thu Aug 11, 2011 6:51 pm

Domenico,

Hemos probado a modificar la función MsgSplash() de esta forma, pero el efecto parece seguir ocurriendo pues son eventos de repintado que envia la ventana en donde se mueve el ratón:

Code: Select all  Expand view
function MsgSplash( cBmpFile, nSeconds, bAction )

   local oBmp, hDC, hBmpBack, nStartAt, hWnd
   local nTop, nLeft, nBottom, nRight, nWidth, nHeight

   DEFAULT nSeconds := 5

   if Empty ( cBmpFile )
      if bAction != nil
         Eval( bAction )
      endif
      return nil
   endif

   if "." $ cBmpFile
      DEFINE IMAGE obmp FILENAME cBmpFile
   else
      DEFINE IMAGE obmp RESOURCE cBmpFile
   endif

   nWidth   = nBmpWidth( oBmp:hBitmap )
   nHeight  = nBmpHeight( oBmp:hBitmap )
   nLeft    = ( GetSysMetrics( 0 ) / 2 ) - nWidth / 2
   nTop     = ( GetSysMetrics( 1 ) / 2 ) - nHeight / 2
   nRight   = nLeft + nWidth - 1
   nBottom  = nTop + nHeight - 1
   hWnd     = GetDesktopWindow()

   hBmpBack = FWSaveScreen( hWnd, nTop, nLeft, nBottom, nRight )

   SetCapture( hWnd )
   ShowCursor( .f. )
   if oBmp:HasAlpha()
      ABPaint( hDC := GetWindowDC( hWnd ), nLeft, nTop, oBmp:hBitmap )
   else
      DrawBitmap( hDC := GetWindowDC( hWnd ), oBmp:hBitmap, nTop, nLeft )
   endif
   ReleaseDC( hWnd, hDC )
   if bAction == nil
      Sleep( nSeconds * 1000 )
   else
      nStartAt := Seconds()
      Eval( bAction, oBmp )
      if ( nSeconds -= ( Seconds() - nStartAt ) ) > 0
         Sleep( nSeconds * 1000 )
      endif
   endif
   FWRestScreen( hWnd, hBmpBack, nTop, nLeft, nBottom, nRight )
   DeleteObject( hBmpBack )

   oBmp:End()
   ReleaseCapture()
   ShowCursor( .t. )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 72 guests