(BlitzPlus) - Transparente Fenster unter Windows 2000/XP
Übersicht BlitzBasic Codearchiv
EisbaerBetreff: (BlitzPlus) - Transparente Fenster unter Windows 2000/XP |
So, Jul 20, 2008 14:44 Antworten mit Zitat |
|
---|---|---|
Transparenter Fenster Effekt für Windows 2000/XP oder höher.
Ähnlich dem "Aero Glass" Design für Windows Vista. Demo Vorschau: Code: [AUSKLAPPEN] ;-------------------------------------------------------------------------- ; Transparente Fenster unter Windows 2000/XP ; ; 2008 Eisbaer Solution (www.eisbaer-solution.de) ; ; Blitz Plus V 1.37 ; ;-------------------------------------------------------------------------- win = CreateWindow( "Transparenz", 200, 200, 400, 300, 0, 1 + 32 ) Global GWL_EXSTYLE = -20 Global WS_EX_LAYERED = $80000 Global hwnd ; Einstellbare Werte für Transparenz Effekt. Global farbtrans = 0 ;Einzellne angegebene Farbe Transparent Schalten. Global alpha = 180 ; ( 0 bis 255) 0 = unsichtbar 255 = undurchsichtig Global lwa_alpha = 2 ; Fenster Handle ermitteln. hwnd = QueryObject (win, 1) ; Ermitteln ob erweiterter Fensterstil WS_EX_LAYERED gesetzt wurde. lExStyle = api_GetWindowLong(hwnd, GWL_EXSTYLE) ; Den Wert um WS_EX_LAYERED erweitern, wenn nicht gesetzt. lExStyle = lExStyle Or WS_EX_LAYERED ; Wert dem Fenster zuweisen. api_SetWindowLong hwnd, GWL_EXSTYLE, lExStyle ; Fenster Transparent schalten. api_SetLayeredWindowAttributes(hwnd, farbtrans, alpha, lwa_alpha) While True WaitEvent( ) If EventID( ) = $803 Then ; Erweiterten Fenster Handle Entfernen. lExStyle = api_GetWindowLong(hWnd, GWL_EXSTYLE) lExStyle = 0 api_SetWindowLong hWnd, GWL_EXSTYLE, lExStyle End EndIf Wend ;--------------------------------------------------------------------- ;API ; user32.decls ;--------------------------------------------------------------------- ; api_GetWindowLong% (hwnd%, nIndex%) : "GetWindowLongA" ; api_SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA" ; api_SetLayeredWindowAttributes (hWnd%, crKey%, bAlpha%, dwFlags%) : "SetLayeredWindowAttributes" |
||
DAK |
So, Jul 20, 2008 15:07 Antworten mit Zitat |
|
---|---|---|
sehr schade, dass das nur unter b+ geht... schaut gut aus... | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Gast |
So, Jul 20, 2008 15:17 Antworten mit Zitat |
|
---|---|---|
Cool!
Das loässt sich verwerten! |
||
Willi die Rübe |
So, Jul 20, 2008 16:10 Antworten mit Zitat |
|
---|---|---|
Müsste man doch eigentlich auch in B3D einbauen können. Das Windowhandle kriegt man auch mit GetActiveWindow. | ||
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX At the Farewell Party visit: MySpace | Homepage |
Gast |
So, Jul 20, 2008 17:06 Antworten mit Zitat |
|
---|---|---|
Klar geht das, nur mit Bugs!
Ich habs mal umgecodet Code: [AUSKLAPPEN] ;--------------------------------------------------------------------------
; Transparente Fenster unter Windows 2000/XP ; ; 2008 Eisbaer Solution (www.eisbaer-solution.de) ; ; Blitz3D Mod von Flitztuete95 ; ; Blitz3D 1.99 ; ;-------------------------------------------------------------------------- Global GWL_EXSTYLE = -20 Global WS_EX_LAYERED = $80000 Global hwnd = SystemProperty("AppHWND") ; Einstellbare Werte für Transparenz Effekt. Global farbtrans = 0 ;Einzellne angegebene Farbe Transparent Schalten. Global alpha = 180 ; ( 0 bis 255) 0 = unsichtbar 255 = undurchsichtig Global lwa_alpha = 2 ; Fenster Handle ermitteln. ; Ermitteln ob erweiterter Fensterstil WS_EX_LAYERED gesetzt wurde. lExStyle = api_GetWindowLong(hwnd, GWL_EXSTYLE) ; Den Wert um WS_EX_LAYERED erweitern, wenn nicht gesetzt. lExStyle = lExStyle Or WS_EX_LAYERED ; Wert dem Fenster zuweisen. api_SetWindowLong hwnd, GWL_EXSTYLE, lExStyle ; Fenster Transparent schalten. api_SetLayeredWindowAttributes(hwnd, farbtrans, alpha, lwa_alpha) While Not KeyDown(1) ClsColor Rand(255),Rand(255),Rand(128) Cls Wend Viel Spa$ |
||
ToeB |
So, Jul 20, 2008 17:20 Antworten mit Zitat |
|
---|---|---|
Mal ne doofe frage : Woher krigt ich decls und dll ?
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
ChristianK |
So, Jul 20, 2008 17:37 Antworten mit Zitat |
|
---|---|---|
Die Decls steht unten im Quelltext drin, die DLL ist bei Windows dabei.
Das passt btw besser ins "DLLs und Userlibs"-Forum. |
||
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 |
ToeB |
So, Jul 20, 2008 18:02 Antworten mit Zitat |
|
---|---|---|
Was muss ich denn da Kopieren von den decls ? Einfach kopieren und in die DECLS reinschreiben, und dann funtzt es? Also alles was unten drunter in Komenntar setht ?
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
ChristianK |
So, Jul 20, 2008 18:21 Antworten mit Zitat |
|
---|---|---|
Einfach die letzten 3 Zeilen und darüber: .lib "user32.dll" in die Decls schreiben. | ||
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 |
ToeB |
So, Jul 20, 2008 18:34 Antworten mit Zitat |
|
---|---|---|
Also...
In meine decls datei steht jetzt : Code: [AUSKLAPPEN] user32.decls
api_GetWindowLong% (hwnd%, nIndex%) : "GetWindowLongA" api_SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA" api_SetLayeredWindowAttributes (hWnd%, crKey%, bAlpha%, dwFlags%) :"SetLayeredWindowAttributes Und dann will ich das prog starten ; Fehlermeldung ! Zitat: Error in userlib 'user32.decls' - Function decl without lib diretive
Was heißt das ? Was hab ich falsch gemacht ?? mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Blackside |
So, Jul 20, 2008 18:40 Antworten mit Zitat |
|
---|---|---|
du musst anstatt:
Code: [AUSKLAPPEN] user32.decls
Code: [AUSKLAPPEN] .lib "user32.dll"
schreiben MFG Blackside |
||
Hier sollte eigentlich eine Signatur stehen! |
Silver_Knee |
So, Jul 20, 2008 18:51 Antworten mit Zitat |
|
---|---|---|
ersetze
Code: [AUSKLAPPEN] ; Fenster Handle ermitteln.
hwnd = QueryObject (win, 1) durch Code: [AUSKLAPPEN] ; Fenster Handle ermitteln.
hwnd = SystemProperty$ ("AppHWND") für B3D |
||
Hip Teen |
Mo, Jul 21, 2008 8:03 Antworten mit Zitat |
|
---|---|---|
Cool wäre noch, wenn du das ganze in eine Funktion packst - dann hast du den gleichen Code erstellt, den ich auch mal im englischen Code Archiv hochgeladen habe | ||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
Eisbaer |
Mo, Jul 21, 2008 18:11 Antworten mit Zitat |
|
---|---|---|
@ Hip Teen
Mann kann ja nicht alles wissen, ist ja schön wenn gewissen Ideen unabhängig von einander geboren werden. Hauptsache sie werden ins Forum übertragen, damit alle was davon haben. Und so, hat nun auch die deutsche Community dieses Feature als Code Vorlage. Grüße Eisbaer |
||
sxt-ghjl |
Di, Jul 20, 2010 19:57 Antworten mit Zitat |
|
---|---|---|
K, der Thread hier ist zwar schon etwas älter, aber ich denk mal, dass ich nicht extra ´nen neuen aufmache, zumal mein Prob ja auch direkt hiermit zusammenhängt. ^^
Also, ich hab den Blitz3D-Code, der von flitztuete95 aus dem BlitzPlus-Code umgeschrieben wurde, in meine B3D-Vollversion gepasted -> Code: [AUSKLAPPEN] ;--------------------------------------------------------------------------
; Transparente Fenster unter Windows 2000/XP ; ; 2008 Eisbaer Solution (www.eisbaer-solution.de) ; ; Blitz3D Mod von Flitztuete95 ; ; Blitz3D 1.99 ; ;-------------------------------------------------------------------------- Global GWL_EXSTYLE = -20 Global WS_EX_LAYERED = $80000 Global hwnd = SystemProperty("AppHWND") ; Einstellbare Werte für Transparenz Effekt. Global farbtrans = 0 ;Einzellne angegebene Farbe Transparent Schalten. Global alpha = 180 ; ( 0 bis 255) 0 = unsichtbar 255 = undurchsichtig Global lwa_alpha = 2 ; Fenster Handle ermitteln. ; Ermitteln ob erweiterter Fensterstil WS_EX_LAYERED gesetzt wurde. lExStyle = api_GetWindowLong(hwnd, GWL_EXSTYLE) ; Den Wert um WS_EX_LAYERED erweitern, wenn nicht gesetzt. lExStyle = lExStyle Or WS_EX_LAYERED ; Wert dem Fenster zuweisen. api_SetWindowLong hwnd, GWL_EXSTYLE, lExStyle ; Fenster Transparent schalten. api_SetLayeredWindowAttributes(hwnd, farbtrans, alpha, lwa_alpha) While Not KeyDown(1) ClsColor Rand(255),Rand(255),Rand(128) Cls Wend und in eine *.txt Folgendes geschrieben: Zitat: .lib "user32.dll"
api_GetWindowLong% (hwnd%, nIndex%) : "GetWindowLongA" api_SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA" api_SetLayeredWindowAttributes (hWnd%, crKey%, bAlpha%, dwFlags%) :"SetLayeredWindowAttributes Und diese txt hab ich in user32.decls umgetauft und mit der user32.dll in den Userlibs-Ordner von Blitz3D kopiert. Allerdings passiert jetzt nichts, wenn ich die *.bb ausführe bzw. "Function 'api_getwindowlong' not found" wird als Fehlermeldung ausgegeben... Was mache ich noch falsch? |
||
D2006Administrator |
Di, Jul 20, 2010 20:05 Antworten mit Zitat |
|
---|---|---|
B3D neugestartet? | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
Pummelie |
Di, Jul 20, 2010 20:06 Antworten mit Zitat |
|
---|---|---|
Das hast eine dert Grund Komponenten von Windows in den Userlib Ordner gepackt
Lösche diese, und probiere es dann. |
||
It's done when it's done. |
Eingeproggt |
Di, Jul 20, 2010 20:08 Antworten mit Zitat |
|
---|---|---|
Dir fehlt einfach ein Anführungszeichen am Ende der letzten Funktion in der decls.
Bei mir geht der Code dann. Aber er ist leider nicht ganz so nützlich... verschieb mal das so erstellte Fenster.... |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
sxt-ghjl |
Di, Jul 20, 2010 20:21 Antworten mit Zitat |
|
---|---|---|
Hm, schon mal ein Danke für die schnellen Antworten! ^^
Allerdings möchte es immer noch nicht... Hab jetzt also die user32.dll aus dem Userlibs-Ordner gelöscht und in user32.decls das hier stehen Code: [AUSKLAPPEN] .lib "user32.dll"
api_GetWindowLong% (hwnd%, nIndex%) : "GetWindowLongA" api_SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA" api_SetLayeredWindowAttributes (hWnd%, crKey%, bAlpha%, dwFlags%) :"SetLayeredWindowAttributes" Aber nach wie vor -> Function 'api_getwindowlong' not found ...Schade ^^* Weiß sonst noch jemand Rat? |
||
sxt-ghjl |
Di, Jul 20, 2010 23:17 Antworten mit Zitat |
|
---|---|---|
Wenn ich andere Beispiele mit *.decls und *.dlls versuche, gibt es auch immer wieder Fehlermeldungen. Könnte es sein, dass bei mir allgemein kein Zugriff auf *.dlls möglich ist? | ||
Übersicht BlitzBasic Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group