16 bits tranparentes

16 bits tranparentes

Postby manuramos » Thu Feb 02, 2006 5:36 pm

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby Antonio Linares » Fri Feb 03, 2006 5:05 pm

Manu,

Está muy bien!
regards, saludos

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

Postby Manuel Valdenebro » Sat Feb 04, 2006 10:43 am

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
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby manuramos » Sat Feb 04, 2006 1:39 pm

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)

Postby manuramos » Sat Feb 04, 2006 1:43 pm

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)

Postby manuramos » Sat Feb 04, 2006 11:25 pm

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby meskamas » Tue Mar 07, 2006 11:34 pm

excelente trabajo, Felicidades
Manuel Escamilla Melchor
Siesa de C.V.
Mexico, D.F.
User avatar
meskamas
 
Posts: 28
Joined: Thu Mar 02, 2006 9:06 pm
Location: Mexico, d.f


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 2 guests