16 bits tranparentes

Post Reply
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

16 bits tranparentes

Post by manuramos »

Qué embidia de diálogos tranparentes con los 32 bits. Menos mal que con 16 bits tambien se puede: Ahí va una clase que ayyuda

#Include "FiveWin.ch"
*#Include "MisFunc.ch"

#define GWL_STYLE -16

CLASS TDIAG OF TDIALOG

CLASSDATA lRegistered AS LOGICAL

DATA lSomb AS LOGICAL INIT .F.
DATA hFond,hPen,nDif

METHOD Activate( bClicked, bMoved, bPainted, lCentered, bValid, lModal, bInit, bRClicked, bWhen, nClrShadow )
METHOD Initiate( hWndFocus, hWnd )
METHOD Paint()
METHOD StartPaint()
METHOD PintSombra()
METHOD Destroy()

ENDCLASS


METHOD Activate( bClicked, bMoved, bPainted, lCentered, bValid, lModal, bInit, bRClicked, bWhen, nClrShadow ) CLASS TDIAG
IF nClrShadow # NIL
::lSomb := .T.
::hPen := CreatePen( 0,1,nClrShadow )
ENDIF
DEFINE BRUSH ::oBrush NULL
RETURN Super:Activate( bClicked, bMoved, bPainted, lCentered, bValid, lModal, bInit, bRClicked, bWhen )

METHOD Initiate( hWndFocus, hWnd ) CLASS TDIAG
LOCAL lFocus := Super:Initiate( hWndFocus, hWnd )
*
::nDif := IF(lAnd(GetWindowLong(::hWnd,GWL_STYLE),WS_BORDER),1,0)
::bStart := { || ::StartPaint() }
RETURN lFocus

METHOD Paint() CLASS TDIAG
DrawBitmap( ::hDc, ::hFond, -::nDif, -::nDif )
IF ::bPainted # NIL
EVAL(::bPainted,::hDc)
ENDIF
RETURN NIL
*
METHOD StartPaint() CLASS TDIAG
::GetDc()
::PintSombra(::hDc)
::ReleaseDc()
IF ::bPainted # NIL
ENDIF
::hFond := WndBitmap(::hWnd)
RETURN NIL
*
METHOD PintSombra(hDc) CLASS TDIAG
LOCAL hOldP := SelectObject( hDc,::hPen )
LOCAL nCont1,nCont2 := 0
LOCAL nDesde := 2
LOCAL nHasta := ::nWidth+::nHeight-2
*
FOR nCont1 = nDesde TO nHasta STEP 2
nCont2 := nCont1 - ::nHeight
MoveTo(hDc,nCont1,0)
LineTo(hDc,nCont2,::nHeight)
MoveTo(hDc,nCont2,0)
LineTo(hDc,nCont1,::nHeight)
NEXT
SelectObject( hDc,hOldP )
RETURN NIL

METHOD Destroy() CLASS TDIAG
DeleteObject(::hFond)
DeleteObject(::hPen)
RETURN NIL

Por favor, si alguien la perfecciona, le agradecería que me mandara el nuevo código a mi e-mail (ramosframit@ono.com)

Y EL FONDO NO SE BORRA CUANDO SE REFRESCA. El único inconveniente es que sólo se puede emplear con diálogos estáticos.

[img][img]http://img72.imageshack.us/img72/5411/ejemplo10dn.jpg[/img][/img]

En este ejemplo, lo uso para la soombra del diaologo de confirmacion

[img][img]http://img72.imageshack.us/img72/2374/ejemplo20lx.jpg[/img][/img]

En este otro, para la sombra del diálogo naranja, y para el menu que hay por detrástranlucido.
Nos Gusta Programar
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Manu,

Está muy bien!
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post by Manuel Valdenebro »

Muy buenos Manuel, pero lo que mas me han impresionado son los folders que utilizas.- ¿Como lo haces?

Gracias y un saludo desde Málaga
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Muchas gracias Manuel, pero no son folders, son BITMAPS, pero da el pego. Los dialogo son NOWAIT sobre un WINDOW normal. Va muy bien; parecido al entorno MDI, pero, en ciertos aspectos, más controlable, si nunca se va a mostrar.
Hay dos BITMAPS para cada solapa, la activa y las otras, inactivas.
Nos Gusta Programar
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Bueno, en realidad, son tres BITMAPS por cada solapa, se me olvidaba nombrar los que se 'ReLoadea'n cuando paso el Mouse por encima (un poco más altos, para dar la impresión de que las solapas se elevan al pasar el ratón por encima).
Nos Gusta Programar
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Repasando mi clase TDIAG me he dado cuenta de un pequeño error, ::PintSombra sólo debe ejecutarse (en bStartPaint) si ::lSomb es .T.
Perdon!!
Lo que pasa es que yo siempre la utilizo con color de sombra.
Nos Gusta Programar
User avatar
meskamas
Posts: 28
Joined: Thu Mar 02, 2006 9:06 pm
Location: Mexico, d.f
Contact:

Post by meskamas »

excelente trabajo, Felicidades
Manuel Escamilla Melchor
Siesa de C.V.
Mexico, D.F.
Post Reply