Ganzes Programm Tranzperent!

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Zantero
Beiträge: 24
Registriert: 14.04.2007 17:17
Wohnort: Bayern
Kontaktdaten:

Ganzes Programm Tranzperent!

Beitrag von Zantero »

Hab zwar jetzt die Suche benutzt, aber da standen so spezielle Sachen. Meine Frage ist, ob ich mein Programm wie in Vista z.b http://www.win-news.de/screenshots/screen_catid,9.html hier vom 2 Bild der Rahmen. Nur nicht so verschwemt. Geth das mit den ganzen Programm?
MFG Zantero

Wer Rechtschreibfehler findet, der darf sie behalten!
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Ja, unverschwämmt geht das auf Win2k/XP, dazu musst du allerdings die WinAPI bemühen.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Code: Alles auswählen

SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE) | #WS_EX_LAYERED) 
SetLayeredWindowAttributes_(WindowID(0), 0, (255 * 90) / 100, #LWA_ALPHA)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Zantero
Beiträge: 24
Registriert: 14.04.2007 17:17
Wohnort: Bayern
Kontaktdaten:

Beitrag von Zantero »

Ja fanke, also ich schreib jetzt mein Programm und füge dann den Code ein?
MFG Zantero

Wer Rechtschreibfehler findet, der darf sie behalten!
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

> Ja fanke, also ich schreib jetzt mein Programm und füge dann den Code ein?
Nein. Denn das Geth leider nicht Tranzperent!
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Wenn du mal ganz stark drüber nachdenkst, wirst du selbst draufkommen, was ein guter Zeitpunkt ist um das Fenster transparent zu schalten...

Irgendwann nach dem erzeugen des Fensters und vor den schließen des Fenster klingt nach einer guten Idee, oder?
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Zantero hat geschrieben:Ja fanke
Fitte!
a²+b²=mc²
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Zwar nur gefaked ... aber vielleicht reicht's ja für Deine Zwecke. ;)

Code: Alles auswählen

EnableExplicit

Procedure CallBack(WindowID, Message, wParam, lParam)
	Protected region
	Static OldWidth, OldHeight
	If Message = 70
		MoveWindow_(WindowID(1),WindowX(0)+22,WindowY(0)+48,WindowWidth(0)-38,WindowHeight(0)-78,-1)
		If WindowWidth(1) <> OldWidth Or WindowHeight(1) <> OldHeight
			region=CreateRoundRectRgn_(0,0,WindowWidth(1)-1,WindowHeight(1)-1,20,20) 
			SetWindowRgn_(WindowID(1),region,#True) 
			DeleteObject_(region)
			OldWidth = WindowWidth(1)
			OldHeight = WindowHeight(1)
		EndIf
	EndIf
	ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 200, 200, 300, 250, "Tansparentes Fenster mit Schatten", #PB_Window_SystemMenu | #PB_Window_SizeGadget|#PB_Window_Invisible ) 
	If CreateGadgetList(WindowID(0))
		ButtonGadget(0,30,WindowHeight(0)-40,WindowWidth(0)-60,20,"I'm transparent")
	EndIf
	
	
	#CS_DROPSHADOW = $00020000 
	SetClassLong_(WindowID(0),#GCL_STYLE, #CS_DROPSHADOW)
	SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE) | #WS_EX_LAYERED) 
	SetLayeredWindowAttributes_(WindowID(0), 0, (255 * 65) / 100, #LWA_ALPHA)
	OpenWindow(1,WindowX(0)+22,WindowY(0)+48,260,160,"ChildWindow",#PB_Window_BorderLess|#PB_Window_Invisible,WindowID(0))
	SetClassLong_(WindowID(1),#GCL_STYLE, #CS_DROPSHADOW)
	If CreateGadgetList(WindowID(1))
		ButtonGadget(1,30,WindowHeight(1)-40,WindowWidth(1)-60,20,"I'm not transparent")
	EndIf

	HideWindow(1, 0) 
	HideWindow(0, 0) 
	
	CallBack(0,70,0,0)
	SetWindowCallback(@CallBack(),0)
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
PS: Wenn vielleicht jemand die genaue Filterung für einen Window-Move in der CallBack-Message kennt, könnte ich das noch mal sauber nachrüsten - momentan isses nur dirty getrickst. :roll:

Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Antworten