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.
Utilizo Windows Vista Ultimate
Gracias.
msgsplash alpha bitmap
- DiGregorio
- Posts: 42
- Joined: Fri Nov 04, 2005 12:22 am
- Location: Ven - Ita
- Contact:
msgsplash alpha bitmap
FWH/FWHX 9.10 + Harbour + xMate 1.5
Domenico Di Gregorio
Italia - Venezuela
stePyme 1.0
Domenico Di Gregorio
Italia - Venezuela
stePyme 1.0
Re: msgsplash alpha bitmap
Domenico,
Estou com o mesmo problema, conseguiu alguma solução para o problema ?
Muito obrigado
Estou com o mesmo problema, conseguiu alguma solução para o problema ?
Muito obrigado
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: msgsplash alpha bitmap
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:
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
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