Mini Fenster; verschieben; transparent // gelöst

Für allgemeine Fragen zur Programmierung mit PureBasic.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Mini Fenster; verschieben; transparent // gelöst

Beitrag 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
Zuletzt geändert von a14xerus am 15.09.2006 16:31, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mini Fenster

Beitrag 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
a²+b²=mc²
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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. :D
v6.00
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

ärgerlich...
jetz war schon wieder jemand schneller als ich!!! /:->
v6.00
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

danke

//edit: Danke TS für die mühe, aber wie man ein fenster schließt, weiß ich ja *gg*
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PS: In einem Callback reagiert es besser!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hier ein Transparentes Fenster mit Hilfe von API.
Kannste ein- bzw. ausschalten als auch die Transparenz einstellen :mrgreen:

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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten