openwindow

Anfängerfragen zum Programmieren mit PureBasic.
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

openwindow

Beitrag von delikanli_19_82 »

hallo leutz,

1) funktioniert dieset StickyWindow irgendwie nicht so wie er soll.

2) das mit dem Schließen der fenster klappt nicht so richtig. ich habe das gefühl, das beide fenster dieselben Ereignisse gegenseitig oder so abfragen.

Code: Alles auswählen


  Global other_wins.l = 1;
  
  Global id_search.l = 0;
  
  Procedure FrmSearch( x.l, y.l, w.l, h.l )
    
    mx.l = x.l + ( ( w.l - 300 ) / 2 )
    my.l = y.l + ( ( h.l - 160 ) / 2 )
    
    id_search.l = other_wins
    other_wins = other_wins + 1
    
    If OpenWindow( id_search, mx, my, 300, 160, ft_search.s, #PB_Window_MinimizeGadget )
      
      Repeat
        
      Until WaitWindowEvent() = #PB_Event_CloseWindow 
      
    EndIf
    
    StickyWindow(id_search, 1)
    
  EndProcedure

OpenWindow(0,0,0,600,600,"fenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)

Repeat

Event = WaitWindowEvent()

; ...

Until Event = #PB_Event_CloseWindow

End

Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: openwindow

Beitrag von NicTheQuick »

Was hat das Problem mit dem Code zu tun?

Zu 2. rate ich mal blind 'EventWindow()'.
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

Re: openwindow

Beitrag von delikanli_19_82 »

wenn der FrmSearch geladen wird, so ist gerieht er in den hintergrund, sobald ich auf den hauptfenster klicke.

klicke ich am hauptfenster auf den "Schließen-Button" alios rote X, so geriet der Search-Fenster in dern vordergrund.

der soll aber logischerweise sofort vorne sein.

das mit dem EventWindow() konnte ich jetzt nicht nachvollziehen.
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

Re: openwindow

Beitrag von delikanli_19_82 »

so geht es jetzt mit dem StickyWindow:

Code: Alles auswählen

  Procedure FrmSearch( x.l, y.l, w.l, h.l )
    
    mx.l = x.l + ( ( w.l - 300 ) / 2 )
    my.l = y.l + ( ( h.l - 160 ) / 2 )
    
    id_search.l = other_wins
    other_wins = other_wins + 1
    
    If OpenWindow( id_search, mx, my, 300, 160, ft_search.s, #PB_Window_MinimizeGadget )
      
      
    EndIf
    
    StickyWindow(id_search, 1)
    
  EndProcedure
aber wenn ich den Search-Fenster schließe, geht das ganze Programm flirten. wieso?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: openwindow

Beitrag von Kiffi »

@delikanli_19_82: StickyWindow() nach OpenWindow() und
vor die Eventschleife platzieren. Dann klappt's auch.

zu 2.: siehe NicTheQuick. Wenn ein PB_Event_CloseWindow
auftritt, solltest Du mit EventWindow() abfragen, welches
Fenster das Ereignis gemeldet hat und entsprechend reagieren.

Grüße ... Kiffi
a²+b²=mc²
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

Re: openwindow

Beitrag von delikanli_19_82 »

achso... ok, mach ich.

vielen dank euch beiden.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: openwindow

Beitrag von Bisonte »

Du solltest beim #PB_Event_CloseWindow auch abfragen, welches Fenster dieses Event generiert hat, wenn Du mehrere Fenster geöffnet hast.

z.B. :

Code: Alles auswählen

If Event = #PB_Event_CloseWindow And EventWindow() = id_search
  CloseWindow(id_search)
EndIf
Edit: Ups .... da hab ich zu langsam getippt :lol:
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Antworten