Zwei Fenster

Anfängerfragen zum Programmieren mit PureBasic.
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

Zwei Fenster

Beitrag von Martin66119 »

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
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 »

>> Was mache ich falsch!
Deine MainLoop ist falsch, aber ohne Code ist das schwierig zu sagen :wink:
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.
Bild
heinz.goldbach
Beiträge: 93
Registriert: 16.11.2005 18:27
Wohnort: Neuss

Beitrag von heinz.goldbach »

Das Problem hatte ich auch einmal.
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!
Antworten