Seite 1 von 1
Mini Fenster; verschieben; transparent // gelöst
Verfasst: 15.09.2006 16:16
von a14xerus
Hey Leute, ich habe eine Frage:
Ich möchte so ein Fenster machen, wie zb der 30 (oder 40) px Player.. (nur beispiel.. also ein kleines Fenster, allways on top und vll auch durchsichtig..)
meine erste idee war ein #borderless fenster (tranzparanz ist nicht soo wichtig), da wäre meine frage, wie ich es verschiebbar machen kann, andere möglichkeit eben so ein tranzparentes window, aber da habe ich garkeine ahnung von
TIA
Re: Mini Fenster
Verfasst: 15.09.2006 16:19
von Kiffi
> da wäre meine frage, wie ich es verschiebbar machen kann
Rahmenlose Fenster verschieben:
http://www.purebasic.fr/german/viewtopic.php?t=9734
Grüße ... Kiffi
Verfasst: 15.09.2006 16:20
von Thomas
>> eben so ein tranzparentes window
schau mal im CodeArchiv bei window... vielleicht findest du was.
Bei einem bin ich mir sicher: für ein halbtransparentes is ein Code dabei.

Verfasst: 15.09.2006 16:24
von Thomas
ärgerlich...
jetz war schon wieder jemand schneller als ich!!!

Verfasst: 15.09.2006 16:27
von ts-soft
Alle so schnell
hab nen riesencode gemacht:
Code: Alles auswählen
If OpenWindow(0, 100, 100, 40, 40, "", #PB_Window_BorderLess)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_LBUTTONDOWN
ReleaseCapture_()
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndSelect
ForEver
EndIf
Nur beenden läßt es sich noch nicht

Verfasst: 15.09.2006 16:29
von a14xerus
danke
//edit: Danke TS für die mühe, aber wie man ein fenster schließt, weiß ich ja *gg*
Verfasst: 15.09.2006 16:32
von ts-soft
PS: In einem Callback reagiert es besser!
Verfasst: 15.09.2006 16:34
von a14xerus
Also ich habe es auch nur für einen kleinen Teil des Fensters ( sozusagen nen eigenes Sysmenü), und bis jetz funst, trotzdem danke für den hinweis, werde es mal ausprobieren
Verfasst: 27.10.2006 23:20
von Falko
Hier ein Transparentes Fenster mit Hilfe von API.
Kannste ein- bzw. ausschalten als auch die Transparenz einstellen
Code: Alles auswählen
;Author: Falko
;Title: Transparentes WindowEvent
;OS: Windows 2000 / XP
Wert.l=0
Procedure TransparentWindow(Wert.b)
If Wert=1
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(0), 0, GetGadgetState(2),#LWA_ALPHA)
ElseIf Wert=0
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) And (Not #WS_EX_LAYERED))
EndIf
EndProcedure
If OpenWindow(0,0,0,130,100,"TransWindow") And CreateGadgetList(WindowID(0))
SetWindowColor(0,#Yellow)
ButtonGadget(0,10,10,50,20,"TransOff")
ButtonGadget(1,70,10,50,20,"TransOn")
TrackBarGadget(2, 5, 50 ,120, 20, 50, 255,#PB_TrackBar_Ticks)
EndIf
Repeat
eventID=WaitWindowEvent()
If #PB_Event_Repaint
StartDrawing(WindowOutput(0))
DrawingMode(#PB_2DDrawing_Transparent); Texthintergrund transparent
DrawText(10,75,"Dies ist ein Test",#Red,#Blue)
StopDrawing() ; Dies ist nach Abschluss der Zeichenoperationen immer nötig!!! Vergessen Sie dies nie!
EndIf
GadgetNummer = EventGadget()
Select GadgetNummer
Case 0
TransparentWindow(0)
Case 1
TransparentWindow(1)
Case 2
SetLayeredWindowAttributes_(WindowID(0), 0, GetGadgetState(2),#LWA_ALPHA)
EndSelect
Until eventID=#PB_Event_CloseWindow
Grüße ...Falko