[B+] Ausgrauen der Arbeitsfläche

Übersicht BlitzBasic DLLs und Userlibs

Neue Antwort erstellen

 

barratator

Betreff: [B+] Ausgrauen der Arbeitsfläche

BeitragMi, Mai 21, 2008 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ihr kennt es sicher von vielen Programmen, dass wenn ein wichtiger Vorgang gemacht wird, dass dann alles so grau wird.
Dies hab' ich mal nachgeschrieben...Weiß nicht obs gebraucht wird...

Als erstes folgendes in eine *.decls schreiben:
Code: [AUSKLAPPEN]

.lib "user32.dll"
TSetWindowLong(hwnd,style,id) : SetWindowLongW
TSetLayeredWindowAttributes(hwnd,crKey*,bAlpha,dwFlags) : SetLayeredWindowAttributes
TInvalidateRect(hWnd,r,b) : InvalidateRect
TSetClassLong(hWnd,flag, brush) : SetClassLongW

.lib "Gdi32.dll"
TCreateSolidBrush(rgb) : CreateSolidBrush


Und jetzt der Quellcode:
Code: [AUSKLAPPEN]

Global twin





Function grey_init()
   twin = CreateWindow("Dummy", 0, 0, 0, 0, 0, 0)
   SetBackgroundColor(QueryObject(twin,1),0,0,0)
   TSetWindowLong(GetActiveWindow(), -20, $80000)
End Function

Function grey_activate()
   bnk = CreateBank(8)
   SetGadgetShape twin, 0, 0, ClientWidth(Desktop()) , ClientHeight(Desktop())
   For i = 0 To 220 Step 8
     TSetLayeredWindowAttributes(QueryObject(twin,1), bnk,i,2)
     Delay 10
   Next
   FreeBank bnk
End Function

Function grey_deactivate()
   bnk = CreateBank(8)

   For i = 220 To 0 Step -8
     TSetLayeredWindowAttributes(QueryObject(twin,1), bnk,i,2)
     Delay 10
   Next

   SetGadgetShape(twin, 0, 0, 0, 0)
   FreeBank bnk
End Function

Function SetBackgroundColor(hwnd,r,g,b)
   b = Int(TCreateSolidBrush(RGB(r,g,b)))
   TSetClassLong(hwnd,-10,b)
   TInvalidateRect(hwnd,0,1)
End Function

Function RGB(r,g,b)
  Return (r)+(g*256)+(b*65536)
End Function


Viel zu erklären gibt's nicht. Die Variable TWin muss Global deklariert sein, und bevor die Function Grey_Activate oder Grey_Deactivate benutz wird muss Grey_Init aufgerufen werden.


Kurzes Beispiel:

Code: [AUSKLAPPEN]

Global twin
grey_init()

grey_activate()
Delay 2000
grey_deactivate()




Viel Spaß damit.

gruß
Bastian


PS: Bitte verhaut mich nicht wegen meinen Programmierstil Sad
 

Phlox

BeitragFr, Mai 23, 2008 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab's versucht zu B3D umzuschreiben,
aber nun wird das Fenster durchsichtig Very Happy


Code: [AUSKLAPPEN]

Global twin




Function grey_init()
   twin = SystemProperty("AppHWND")
   SetBackgroundColor(SystemProperty("AppHWND"),0,0,0)
   TSetWindowLong(GetActiveWindow(), -20, $80000)
End Function

Function grey_activate()
   bnk = CreateBank(8)
   ;SetGadgetShape twin, 0, 0, apiGetSystemMetrics(0),apiGetSystemMetrics(1)
   For i = 0 To 220 Step 8
      TSetLayeredWindowAttributes(SystemProperty("AppHWND"), bnk,i,2)
      Delay 40
   Next
   FreeBank bnk
End Function

Function grey_deactivate()
   bnk = CreateBank(8)
   
   For i = 220 To 0 Step -8
      TSetLayeredWindowAttributes(SystemProperty("AppHWND"), bnk,i,2)
      Delay 40
   Next
   
   ;SetGadgetShape(twin, 0, 0, 0, 0)
   FreeBank bnk
End Function

Function SetBackgroundColor(hwnd,r,g,b)
   b = Int(TCreateSolidBrush(RGB(r,g,b)))
   TSetClassLong(hwnd,-10,b)
   TInvalidateRect(hwnd,0,1)
End Function

Function RGB(r,g,b)
   Return (r)+(g*256)+(b*65536)
End Function


;Global twin
grey_init()

grey_activate()
Delay 2000
grey_deactivate()
 

ChristianK

BeitragFr, Mai 23, 2008 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Layered Windows und DirectX vertragen sich nicht so gut. Wink
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

barratator

BeitragFr, Mai 23, 2008 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Joa, also wer nicht versteht wie es klappt:
Es erstellt ein Fenster welches über den ganzen Desktop geht, davon wird die Hintergrundfarbe auf Schwarz gesetz und jenachdem immer so stark auf Transparent gesetzt...


gruß
Bastian

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group