Les comento lo siguiente:
He logrado evitar que una vez dibujado el bitmap no desaparesca, encontre que el metodo MouseMove de la Clase TTaskpanel hace el efecto de cambiar color y asignar un CursorHand como si se tratara de un link al pasar el cursor por el titulo del panel, en mi caso no necesito que este efecto se manifieste, modifique la clase no se si de manera correcta evitando este efecto:
- Code: Select all Expand view
PROCEDURE OverrideAndExtend()
EXTEND CLASS TTaskPanel WITH DATA cBmpTransp
EXTEND CLASS TTaskPanel WITH DATA oBmpTransp
EXTEND CLASS TTaskPanel WITH METHOD WaterMark
EXTEND CLASS TTaskPanel WITH METHOD MyEnd
OVERRIDE METHOD MouseMove IN CLASS TTaskPanel WITH MiMouseMove
RETURN
//-------------------------------------------------//
STATIC FUNCTION WaterMark()
LOCAL Self := HB_QSelf()
LOCAL hDC := ::GetDC()
IF !EMPTY( ::cBmpTransp )
DEFINE IMAGE ::oBmpTransp OF Self FILENAME ::cBmpTransp
IF hb_isObject( ::oBmpTransp ) .AND. ::oBmpTransp:hBitmap <> 0
ABPaint( hDC, 07, 470, ::oBmpTransp:hBitmap, 250 )
ENDIF
ENDIF
ReleaseDC( ::hWnd, hDC )
RETURN Nil
//-------------------------------------------------//
STATIC FUNCTION MyEnd()
LOCAL Self := HB_QSelf()
IF hb_isObject( ::oBmpTransp ) .AND. ::oBmpTransp:hBitmap <> 0
::oBmpTransp:END()
ENDIF
::END()
RETURN Nil
//-------------------------------------------------//
STATIC FUNCTION MiMouseMove( nRow, nCol, bKeyFlags )
# Define TME_LEAVE 2
LOCAL Self := HB_QSelf()
TrackMouseEvent( ::hWnd, TME_LEAVE )
RETURN Nil
Lo que no logro es que pinte el bitmap a la primera, no funciona hacer oDlg:Refresh(), oTask:Refresh() o ::oBmpTransp:Refresh(), la unica forma de pintar el bitmap es arrastrando el dialogo fuera del tamaño de la pantalla arriba, abajo o a los lados, por este mismo fallo continua desapareciendo la imagen al sobre poner otras ventanas o dialogos
Carlitos te envio una actualizacion con los cambios..
https://www.mediafire.com/?kh9717bu8aer5qlGracias..