Was mache ich falsch!
In eiem Fenster (#Window_1) habe ich den ein oder anderen TextGadget und StringGadget untergebracht und die entsprechenden Bereiche durch Rahmen abgegrenzt. Wenn ich nun ein zweites Fenser öffne und diese dann über das erste bewege, so schein das zweite Fenster Teile des ersten wie ein "Radiergumme" zu löschen.
Was mach ich da falsch?
Und gleich noch eine zweite Frage! Um die Umrandungen zu zweichen verwende ich den Befehl Line(x, y, Breite, Höhe [, Farbe])).
d.h. bei jedem öffnen des Fensters werden die Rahmen noch gezeichnet. Kann man das auch anders machen z.B. mit einem Sprite, das man entsprechend überlagert?
Martin
Zwei Fenster
- 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
>> Was mache ich falsch!
Deine MainLoop ist falsch, aber ohne Code ist das schwierig zu sagen
Wenn die Ereignisschleife eines Fensters nicht mehr abgearbeitet wird, so kann Windows die dortigen Gadgets usw. nicht neuzeichnen.
Wenn Du also 2 Fenster gleichzeitig nutzen möchtest, so mußte die Ereignisse beider Fenster in einer MainLoop abarbeiten, wobei dann jeweils das Fenster zu unterscheiden ist (mit EventWindowID())
Für Umrandungen gibts das Frame3DGadget, welches einfacher zu handhaben ist.
Deine MainLoop ist falsch, aber ohne Code ist das schwierig zu sagen

Wenn die Ereignisschleife eines Fensters nicht mehr abgearbeitet wird, so kann Windows die dortigen Gadgets usw. nicht neuzeichnen.
Wenn Du also 2 Fenster gleichzeitig nutzen möchtest, so mußte die Ereignisse beider Fenster in einer MainLoop abarbeiten, wobei dann jeweils das Fenster zu unterscheiden ist (mit EventWindowID())
Für Umrandungen gibts das Frame3DGadget, welches einfacher zu handhaben ist.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 93
- Registriert: 16.11.2005 18:27
- Wohnort: Neuss
Das Problem hatte ich auch einmal.
Der nachfolgende Code sollte helfen.
Statt des Bildes kann man auch andere Gadget nehmen.
Der nachfolgende Code sollte helfen.
Statt des Bildes kann man auch andere Gadget nehmen.
Code: Alles auswählen
UseJPEGImageDecoder()
LoadImage (0,"C:\Dokumente und Einstellungen\Maier\Eigene Dateien\PureBasic\bild001.jpg") ; Muß geändert werden
ExamineDesktops()
XAufloesung= DesktopWidth(0)
YAufloesung= DesktopHeight(0)
If OpenWindow(0, 0, 0 ,XAufloesung,YAufloesung, #PB_Window_BorderLess|#PB_Window_SystemMenu , "Fenster 0")
CreateGadgetList(WindowID(0))
ResizeImage(0,XAufloesung,YAufloesung,#PB_Image_Smooth)
ImageGadget(0,0,0,WindowWidth(),WindowHeight(),UseImage(0))
EndIf
If OpenWindow(1, 0, 0 ,300,200, #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_SystemMenu , "Fenster 1")
EndIf
UseWindow(1)
ActivateWindow()
If CreateGadgetList(WindowID())
ButtonGadget (11, 040, 040,200, 20, "Text 1")
ButtonGadget (12, 040, 070,200, 20, "Text 2")
ButtonGadget (13, 040, 100,200, 20, "Text 3")
EndIf
Repeat
ActivateWindow()
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case 11 : ; Case 1
Case 12 : ; Case 2
Case 13 : ; Case 3
Case 99:
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow Or (MenuauswahlZahl.b > 0)
CloseWindow(1)
CloseWindow(0)
End
---------------------------------------------------
Man lernt nur aus Fehlern!
Man lernt nur aus Fehlern!