Seite 1 von 1

Zwei Fenster

Verfasst: 17.01.2006 13:34
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

Verfasst: 17.01.2006 13:52
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.

Verfasst: 17.01.2006 16:06
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