Page 1 of 1

Diálogos Sombreados

Posted: Sat Aug 02, 2008 6:12 pm
by mmercado
Hola Amigos:

Existe alguna clase o utilería para mostrar los diálogos con sombra?

De antemano gracias por su ayuda.

Manuel Mercado

Posted: Mon Aug 04, 2008 10:49 am
by Mike Serra
Buenos días Manuel, al fín lo encontré, lo tenía con algunos ejemplos de transparencias, pero ahí va el ejemplo de las sombras. Espero que mi granito de arena te sirva para que continues con tus fabulosos proyectos,

Saludos,

Miguel Angel

Code: Select all

#include "fivewin.ch"

#define LWA_ALPHA 2
#define GWL_EXSTYLE -20
#define WS_EX_LAYERED 524288
#define CS_DROPSHADOW 131072
#define GCL_STYLE -26

function main()
    LOCAL oDlg, nFactor :=0, btnmais, btnmenos, btnloop
    DEFINE DIALOG oDlg TITLE "Dialogos con sombra" pixel from 0, 0 to 400, 400 
    ACTIVATE DIALOG oDlg CENTER on init PonSombra(odlg) //on paint CallFactor(@nFactor,odlg)
return nil

static function PonSombra(odlg)
    local nInt:=0
    nInt:=SetClassLong(oDlg:hWnd,GCL_STYLE,nOr(GetClassLong(odlg:hWnd,GCL_STYLE),CS_DROPSHADOW))
//    msginfo(nInt)
return
static function callfactor(nFactor,odlg)
    local i:=0
    
    for nFactor = 1 to 255 step 1
        SETTRANSP( oDlg, nFactor )
        sysrefresh()
        if nFactor = 1 
            odlg:nWidth:=400
            odlg:nHeight:=400
            WndCenter( odlg:hWnd )
            sysrefresh()
        end if
    next i
    for i = 1 to 1000000 step 0.5
    next i
    for nFactor = 255 to 1 step -1
        SETTRANSP( oDlg, nFactor )
        sysrefresh()
    end if
    oDlg:end()
return

static function SETTRANSP( oDlg, nFactor )
    SETWINDOWLONG( oDlg:hWnd, GWL_EXSTYLE, NOR( GETWINDOWLONG( oDlg:hWnd,GWL_EXSTYLE ), WS_EX_LAYERED ) )
    SETLAYEREDWINDOWATTRIBUTES( oDlg:hWnd, , nFactor, LWA_ALPHA )
RETURN NIL

static function TRANSPAR( oDlg, nFactor, Sinal, oBtn )
    if Sinal = "+"
        if nFactor < 10 
            nFactor := 260 
        endif
        nFactor -= 5
    else
        if nFactor > 250 
            nFactor := 5 
        endif
        nFactor += 5
    end if
    SetWindowText( oDlg:hWnd, "Transparent dialog. Transparencia: " + alltrim(str(nFactor)) )
    SETLAYEREDWINDOWATTRIBUTES( oDlg:hWnd, , nFactor, LWA_ALPHA )
    sysrefresh()
return nil

static function TRANSLOOP( oDlg, nFactor, Sinal, oBtn )
    local X
    for X = 1 to 255 step 0.5
        SetWindowText( oDlg:hWnd, "Transparent dialog. Transparencia: " + alltrim(str(x)) )
        SetLayeredWindowAttributes( oDlg:hWnd, , x, LWA_ALPHA )
    next
    for X = 255 to 1 step -0.5
        SetWindowText( oDlg:hWnd, "Transparent dialog. Transparencia: " + alltrim(str(x)) )
        SetLayeredWindowAttributes( oDlg:hWnd, , x, LWA_ALPHA )
    next
    SetWindowText( oDlg:hWnd, "Transparent dialog. Transparencia: " + alltrim(str(nFactor)) )
    SETLAYEREDWINDOWATTRIBUTES( oDlg:hWnd, , nFactor, LWA_ALPHA )
    sysrefresh()
return NIL


DLL32 function SetLayeredWindowAttributes( hWnd As LONG, crKey As LONG, ;
bAlpha As LONG, dwFlags As LONG ) AS LONG PASCAL ;
from "SetLayeredWindowAttributes" lib "user32.DLL"

DLL32 function GetClassLong( hWnd As LONG, crKey As LONG) AS LONG PASCAL ;
from "GetClassLongA" lib "user32.DLL"

DLL32 function SetClassLong( hWnd As LONG, nValue As LONG, nNewValue As LONG) AS LONG PASCAL ;
from "SetClassLongA" lib "user32.DLL"
/*
DLL32 function GetFreeResources(nX AS LONG) AS LONG PASCAL from ;
"_MyGetFreeSystemResources32@4" Lib "RSRC32.DLL"*/



Posted: Mon Aug 04, 2008 4:02 pm
by mmercado
Mike Serra wrote:Buenos días Manuel, al fín lo encontré, lo tenía con algunos ejemplos de transparencias, pero ahí va el ejemplo de las sombras. Espero que mi granito de arena te sirva para que continues con tus fabulosos proyectos
Hola Miguel Angel:

Justamente lo que necesito, mil gracias y un abrazo.

Manuel Mercado

Posted: Tue Aug 05, 2008 11:49 pm
by alex_cyr
que buen tip, gracias por compartir :D

saludos.
Alex.

Super bonito

Posted: Sat Oct 18, 2008 4:34 am
by AIDA
Me encontre su ejemplo de poner sombras que lindo en compartir

una preguntita se puede hacer mas grande la sombra :D

Saludos

Aida

Posted: Sat Oct 18, 2008 8:56 am
by dobfivewin
Estimados

Me sumo a la "preguntita"

Sale finita la sombra en mi caso, o es así como tiene que salir??

Gracias


david
Argentina

Posted: Wed Oct 22, 2008 7:28 am
by dobfivewin
Hola Amigos

Disculpas por la insistencia, Se puede hacer un poco más ancha la somba??

Chas Gracias

David
Argentina

Posted: Wed Oct 22, 2008 12:16 pm
by jbrita
Amigo alguna imagen de dialogos con Sombra

Saludos