Deutsch
Quelltexte/ Codesnippets

Kleine Optische Spielerei

 

CB
Hi,

Fenster kommt und geht wieder - zügig, allmählich oder gemächlich, je nach Bedarf. Experimentieren mit Sleep!
KompilierenMarkierenSeparieren
GrowingWindow
Autor: Christian Bernfeld
DEF GetSysColor(1)   ! "USER32","GetSysColor"
Declare G%,Neutral&,Text1$,Text2$
Neutral& = GetSysColor(15)
WindowStyle 538
WindowTitle "Hoppla - da geht jan Fenster auf ..."
Declare x%,y%,PosX%,PosY%,Xeff%,Yeff%,LX%,LY%
x% = 800
y% = 600
PosX% = (%maxx/2)-(x%/2)
PosY% = (%maxy/2)-(y%/2)
Window 0,0 - 0,0
Cls Neutral&
UseFont "MS Sans Serif",15,0,1,0,0
SetDialogFont 1
Text1$ = @Create("Text",%Hwnd,"Nur eine kleine optische Spielerei",40,40,300,13)
Text1$ = @Create("Text",%Hwnd,"Taste oder Maus zum Beenden...",520,500,240,13)

WhileLoop 1,100

    Sleep 5
    INC G%
    Xeff% = x%*G%/100
    Yeff% = y%*G%/100
    LX% = (%maxx/2)-(Xeff%/2)
    LY% = (%maxy/2)-(Yeff%/2)
    setwindowpos %Hwnd = LX%,LY% - Xeff%,Yeff%;0

EndWhile

WaitInput

WhileNot G% = 1

    Sleep 1
    DEC G%
    Xeff% = x%*G%/100
    Yeff% = y%*G%/100
    LX% = (%maxx/2)-(Xeff%/2)
    LY% = (%maxy/2)-(Yeff%/2)
    setwindowpos %Hwnd = LX%,LY% - Xeff%,Yeff%;0

EndWhile

End

Gruß, Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
09.02.2005  
 




CB
Hi,

ich habe da noch eine Variante: Das Window taucht aus dem Nichts auf und verschwindet genauso elegant wieder. Basierend auf einer Vorlage von Sven Schmidts.
KompilierenMarkierenSeparieren
GrowingDisappearingWindow
Autor: Christian Bernfeld
DEF GetSysColor(1)   ! "USER32","GetSysColor"
Declare G%,Neutral&,Text1$,Text2$
Neutral& = GetSysColor(15)
Die folgende Prozedur "SetTransparent" wurde von Sven Schmidts veröffentlicht,
ich habe sie nur für meine Zwecke etwas modifiziert
PROFAN²-NT-TEAM-Vorlage
Autor: Sven Schmidts, concept/design
Titel: Transparent Window @ Win2k
Beschreibung: Sorgt für diesen "netten" Effekt; Transparente Fenster unter Windows (>=) 2000
Copyright © 2000-2001 Sven Schmidts, schmidts@cdesign.de
def %LWA_ALPHA $2
def %GWL_EXSTYLE -20
def %WS_EX_LAYERED $80000
def %WS_EX_TRANSPARENT $20
def SetWindowLong(3) !"USER32","SetWindowLongA"
def GetWindowLong(2) !"USER32","GetWindowLongA"
def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"

Proc SetTransparent

    Declare Old&
    Parameters Hwnd%, Perc%
    Old& = GetWindowLong(Hwnd%,%GWL_EXSTYLE)
    SetWindowLong(Hwnd%, %GWL_EXSTYLE, @Or(Old&,%WS_EX_LAYERED));
    SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, %LWA_ALPHA);

EndProc

WindowStyle 538
WindowTitle "Hoppla - da geht jan Fenster auf ..."
Declare x%,y%,PosX%,PosY%,Xeff%,Yeff%,LX%,LY%
x% = 800
y% = 600
PosX% = (%maxx/2)-(x%/2)
PosY% = (%maxy/2)-(y%/2)
Window 0,0 - 0,0                      zuerst "neben" den Bildschirm
Cls Neutral&
UseFont "MS Sans Serif",15,0,1,0,0
SetDialogFont 1
Text1$ = @Create("Text",%Hwnd,"Noch so eine kleine optische Spielerei",40,40,300,13)
Text1$ = @Create("Text",%Hwnd,"Taste oder Maus zum Beenden...",520,500,240,13)
***** Variante 1: Abnehmende Transparenz ******
SetTransparent %Hwnd, 0
setwindowpos %Hwnd = PosX%,PosY% - x%,y%;0

WhileLoop 1,100

    Sleep 1
    SetTransparent %Hwnd, G%
    INC G%

EndWhile

***** Oder Variante 2 - beide Methoden kombiniert *****
Voraussetzung für Kombination beider Methoden:
Relativ leistungsstarker PC (v.a. Grafikkarte), sonst ruckelts zu stark

WhileLoop 1,100

    Sleep 1
    SetTransparent %Hwnd, G%
    INC G%
    Xeff% = x%*G%/100
    Yeff% = y%*G%/100
    LX% = (%maxx/2)-(Xeff%/2)
    LY% = (%maxy/2)-(Yeff%/2)
    setwindowpos %Hwnd = LX%,LY% - Xeff%,Yeff%;0

EndWhile

WaitInput

WhileNot G% = 1

    Sleep 1
    SetTransparent %Hwnd, G%
    DEC G%
    Xeff% = x%*G%/100
    Yeff% = y%*G%/100
    LX% = (%maxx/2)-(Xeff%/2)
    LY% = (%maxy/2)-(Yeff%/2)
    setwindowpos %Hwnd = LX%,LY% - Xeff%,Yeff%;0       auch hier können beide Methoden kombiniert werden

EndWhile

End

Viel Spaß beim Experimentieren
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
10.02.2005  
 



Noch ne Variante:
KompilierenMarkierenSeparieren
 {$cleq}
def SetWindowLong(3) !"USER32","SetWindowLongA" :
def GetWindowLong(2) !"USER32","GetWindowLongA"
def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
declare i&
buildmainwin
for i&:=0 to 255 step 3 do alpha %hwnd,i&
print "Click" : waitinput
for i&:=255 downto 0 step 3 do alpha %hwnd,i&
end

Proc preparehdl4alpha

    Parameters hdl&
    SetWindowLong(hdl&, -20, @Or(GetWindowLong(hdl&,-20),$80000));

EndProc

Proc alpha

    Parameters hdl&,aval%
    SetLayeredWindowAttributes(hdl&, 0, aval%, $2);

EndProc

proc buildmainwin

    windowstyle 80 : window 0,0 - 0,0 : preparehdl4alpha %hwnd : alpha %hwnd,0
    setwindowpos %hwnd = 0,0 - %maxx,%maxy
    cls 0 : showcursor 0

endproc

Salve, iF
 
10.02.2005  
 




CB
Hi, iF!
Seufz - da sieht man halt den Profi am Werk!

Na warte - mein Auto hat auch schon gemeint: Wenn ich einmal groß bin, werde ich ein Ferrari! :+D)--

Gruß, Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
10.02.2005  
 



Also das hat doch nun wirklich nix mit Profi hin oder her zu tun - das ist doch wirklich nurn normaler quelly.

Salve, iF
 
10.02.2005  
 




CB
War ja auch nurn :+D)--

Aber mir gefällt das irrsinnig gut, wie einfach manche Dinge mit Deinem genialen XPSE (und XProfan 9) zu verwirklichen sind. Deshalb -->

Apropos XPSE: Bei meinem derzeitigen Projekt steigt XPSE aus. Im Log kommt er nur bis Loading, mehr passiert nicht. Alle anderen Progs, die ich damit getestet habe, funktionieren aber. Da ich aber immer noch etliche kleinere Fehler in meinem Code auszubügeln habe, hat es für mich momentan nicht viel Sinn, den auch noch mit dem XPSE zu testen. Ich verspreche Dir aber, wenn das Prog fertig ist (das werden dann so schätzomativ 15000 Zeilen werden) und Profan2cpp auch keine Fehler mehr meldet, Deinen XPSE da ran zu lassen - Du wolltest ja, daß mal ein richtig großer Code getestet wird.

Gruß, Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
10.02.2005  
 



Ich würde mich wirklich freuen zu wissen warum xpse aussteigt. Vielleicht einfach mal Passagen kicken um festzustellen woran es liegt.

Grade zum Entwickeln größerer Projekte - und um Flüchtigkeitsfehler zu verringern - ist xpse geeignet - denn solch Fehler findet xpse.

Salve, iF
 
10.02.2005  
 




CB
Hi, iF!

Bitte noch um etwas Geduld, auch wenns Dich schon sehr unter den Fingernägeln brennt - glaub mir, ich verstehe das.
Mein angepeilter Fertigstellungstermin ist Ende Februar, spätestens Mitte März. Ich arbeite dzt. wie ein Pferd daran: seit mehr als 2 Monaten 12 - 14 Stunden und max. 6 Stunden Schlaf - täglich! (außer am Wochenende, da dreh ichs dann um). Auch meine (Viel-)Schreiberei im Forum kostet mich viel Zeit. (mach ich aber gerne und aus Überzeugung)
Nur: meinen Code runterzustrippen sehe ich mich derzeit leider wirklich außerstande. Abgesehen davon, wärs auch kaum realisierbar. Da hängen soviele Funktionen voneinander ab, daß dann gar nix mehr funktionieren würde.
Ich bin froh, wenn der Code mal nicht nur zu 98% funktioniert. Quasi-M$-Standard
Laß mir noch ein bißchen Zeit! Vielleicht löst sich das Problem mit dem XPSE dann von selbst. Ansonsten werde ich das nach Fertigstellung ausgiebig testen und wenn ich selbst nicht weiterkomme, schicke ich Dir den Code mitsamt dem ganzen Klimbim, der notwendig ist, damit Du dieselbe Testumgebung einrichten kannst - hoch und heilig versprochen! (Das sind einige MB)
Vielleicht gewinne ich den Sonderpreis für das umfangreichste Wettbewerbsprogramm Nein, keine Sorge, da hätte ich eine andere Idee, bloß - woher die Zeit nehmen?

Gruß, Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
10.02.2005  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.379 Betrachtungen

Unbenanntvor 0 min.
Konverter24.03.2024
Walter31.12.2022
p.specht16.12.2020
Marc Bonus22.06.2016
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

CB (5x)
iF (3x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie