Diálogos Sombreados

Post Reply
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Diálogos Sombreados

Post 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
Mike Serra
Posts: 287
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Post 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"*/


User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Post 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
alex_cyr
Posts: 77
Joined: Wed Jun 28, 2006 6:38 pm
Location: Chihuahua

Post by alex_cyr »

que buen tip, gracias por compartir :D

saludos.
Alex.
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Super bonito

Post 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
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Post 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
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Post by dobfivewin »

Hola Amigos

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

Chas Gracias

David
Argentina
jbrita
Posts: 425
Joined: Mon Jan 16, 2006 3:42 pm

Post by jbrita »

Amigo alguna imagen de dialogos con Sombra

Saludos
Post Reply