FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Diálogos Sombreados
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Diálogos Sombreados
Posted: Sat Aug 02, 2008 06:12 PM

Hola Amigos:

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

De antemano gracias por su ayuda.

Manuel Mercado

manuelmercado at prodigy dot net dot mx
Posts: 297
Joined: Fri Apr 14, 2006 05:52 PM
Diálogos Sombreados
Posted: Mon Aug 04, 2008 10:49 AM
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

#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"*/
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Diálogos Sombreados
Posted: Mon Aug 04, 2008 04:02 PM
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
manuelmercado at prodigy dot net dot mx
Posts: 77
Joined: Wed Jun 28, 2006 06:38 PM
Diálogos Sombreados
Posted: Tue Aug 05, 2008 11:49 PM

que buen tip, gracias por compartir :D

saludos.
Alex.

Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM
Super bonito
Posted: Sat Oct 18, 2008 04:34 AM

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ǝ
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Diálogos Sombreados
Posted: Sat Oct 18, 2008 08:56 AM

Estimados

Me sumo a la "preguntita"

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

Gracias

david
Argentina

Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Diálogos Sombreados
Posted: Wed Oct 22, 2008 07:28 AM

Hola Amigos

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

Chas Gracias

David
Argentina

Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Diálogos Sombreados
Posted: Wed Oct 22, 2008 12:16 PM

Amigo alguna imagen de dialogos con Sombra

Saludos

Continue the discussion