Window-Schliessen abfangen
Window-Schliessen abfangen
Hallo,
Leider habe ich nichts via Suche gefunden,(weiss auch nicht,wonach ich suchen müsste).
Es geht um Folgendes:
Um das('nicht gewollte') Schliessen des Window's zu verhindern,habe ich den Menu-Eintrag,sowie Schliess-Knopf und
System-Menu-Punkt mit 'Bind-Event'/'BindMenuEvent' auf eine Procedure 'umgeleitet.
;********
Procedure ende()
a=MessageRequester("Programm Exit!","Programm schliessen?",#PB_MessageRequester_YesNo|#PB_MessageRequester_Warning)
If a=#PB_MessageRequester_Yes
End
EndIf
EndProcedure
;********
Das funktioniert mit dem Menu,bei "nein" gehts halt im prg weiter
Nicht aber mit dem System-Menu, da endet das prg so oder so.
Frage:
Wie kann ich aus einer Procedure an ein Label springen,bzw wie kann ich Schliessen verhindern?
Ich habe so etwas bis jetzt nur in BlitzPlus programmiert mit 'Goto Sprünge zur Main-Loop
aber das ist wohl aus einer Procedure nicht möglich,da Diese dann nicht ordentlich verlassen würde
(Ich mochte auch kein Goto)
Danke im Vorraus
Olaf
Leider habe ich nichts via Suche gefunden,(weiss auch nicht,wonach ich suchen müsste).
Es geht um Folgendes:
Um das('nicht gewollte') Schliessen des Window's zu verhindern,habe ich den Menu-Eintrag,sowie Schliess-Knopf und
System-Menu-Punkt mit 'Bind-Event'/'BindMenuEvent' auf eine Procedure 'umgeleitet.
;********
Procedure ende()
a=MessageRequester("Programm Exit!","Programm schliessen?",#PB_MessageRequester_YesNo|#PB_MessageRequester_Warning)
If a=#PB_MessageRequester_Yes
End
EndIf
EndProcedure
;********
Das funktioniert mit dem Menu,bei "nein" gehts halt im prg weiter
Nicht aber mit dem System-Menu, da endet das prg so oder so.
Frage:
Wie kann ich aus einer Procedure an ein Label springen,bzw wie kann ich Schliessen verhindern?
Ich habe so etwas bis jetzt nur in BlitzPlus programmiert mit 'Goto Sprünge zur Main-Loop
aber das ist wohl aus einer Procedure nicht möglich,da Diese dann nicht ordentlich verlassen würde
(Ich mochte auch kein Goto)
Danke im Vorraus
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Window-Schliessen abfangen
Also bei mir kann ich sowohl über X als auch über das Systemmenü das Beenden mit Nein stoppen:
Code: Alles auswählen
EnableExplicit
Procedure ende()
Protected a
a = MessageRequester("Programm Exit!", "Programm schliessen?", #PB_MessageRequester_YesNo | #PB_MessageRequester_Warning)
If a = #PB_MessageRequester_Yes
End
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
BindEvent(#PB_Event_CloseWindow, @ende())
Repeat
Select WaitWindowEvent()
EndSelect
ForEver
EndIf
Re: Window-Schliessen abfangen
Ich wöllte auch gerade etwas in der Art posten, aber Du warst schneller.
Das funktioniert bei mir ebenfalls.RSBasic hat geschrieben:Also bei mir kann ich sowohl über X als auch über das Systemmenü das Beenden mit Nein stoppen:
Re: Window-Schliessen abfangen
HALLO
Nun, das eigene Menu sowie das System-Menu arbeiten jetzt korrect,
aber der Schliess-Knopf nicht,das Prg wird auf jeden Fall geschlossen!
Olaf
Nun, das eigene Menu sowie das System-Menu arbeiten jetzt korrect,
aber der Schliess-Knopf nicht,das Prg wird auf jeden Fall geschlossen!
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Window-Schliessen abfangen
Dann hast du da wohl etwas falsch programmiert.Olafmagne hat geschrieben:Nun, das eigene Menu sowie das System-Menu arbeiten jetzt korrect,
aber der Schliess-Knopf nicht,das Prg wird auf jeden Fall geschlossen!
Nur kennt außer dir niemand hier dein Programm.
Du kannst dein Programm soweit kürzen, dass nur noch der Teil übrig ist der das Problem demonstriert, und dann den Code hier posten (aber bitte lauffähigen Code). Dann können wir dir helfen.
Re: Window-Schliessen abfangen
Salut
hier der besagte Code.
Wie gesagt,es geht nur noch um den Schliess-Knopf
Olaf
hier der besagte Code.
Wie gesagt,es geht nur noch um den Schliess-Knopf
Code: Alles auswählen
UsePNGImageDecoder()
scrnx=1018
ExamineDesktops()
InitKeyboard()
InitSprite()
InitMouse()
;****************
Procedure Ende()
Protected a
a=MessageRequester("Programm Exit!","Programm schliessen?",#PB_MessageRequester_YesNo|#PB_MessageRequester_Warning)
If a=#PB_MessageRequester_Yes
End
EndIf
EndProcedure
;****************
; menneu=LoadImage(#PB_Any,"C:\Users\Olaf\Documents\SilkTheme\page.png")
; menopn=LoadImage(#PB_Any,"C:\Users\Olaf\Documents\SilkTheme\folder_page.png")
; mensve=LoadImage(#PB_Any,"C:\Users\Olaf\Documents\SilkTheme\disk.png")
; mensva=LoadImage(#PB_Any,"C:\Users\Olaf\Documents\SilkTheme\page_save.png")
; menstn=LoadImage(#PB_Any,"C:\Users\Olaf\Documents\SilkTheme\wrench.png")
; mendel=LoadImage(#PB_Any,"C:\Users\Olaf\Documents\SilkTheme\folder_delete.png")
;****************
win=OpenWindow(#PB_Any,0,0,DesktopWidth(0),DesktopHeight(0),"Dungeon Game Editor",#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_Maximize)
men=CreateImageMenu(#PB_Any,WindowID(win));,#PB_Menu_ModernLook)
;****
MenuTitle("Datei")
MenuItem(1,"New");,ImageID(menneu))
MenuItem(2,"Open");,ImageID(menopn))
MenuBar()
MenuItem(3,"Save");,ImageID(mensve))
MenuItem(4,"Save as...");,ImageID(mensva))
MenuItem(5,"Delete");,ImageID(mendel))
MenuBar()
MenuItem(6,"Settings");,ImageID(menstn))
MenuBar()
MenuItem(7,"Exit")
;***
;tool=CreateToolBar(#PB_Any,WindowID(win))
; ToolBarImageButton(1,ImageID(menneu))
; ToolBarImageButton(2,ImageID(menopn))
; ToolBarImageButton(3,ImageID(mensve))
; ToolBarSeparator()
; ToolBarImageButton(5,ImageID(mendel))
;******
BindMenuEvent(men,7,@Ende())
BindEvent(#PB_Event_CloseWindow,@Ende())
FrameGadget(0,5,28,1015,640 ,"", #PB_Frame_Flat)
OpenWindowedScreen(WindowID(win),7,30,1011,636)
ClearScreen(RGB(120,120,120))
FlipBuffers()
OpenWindow(twin,scrnx,71,342,613,"Sprite-Settings",#PB_Window_Tool,WindowID(win))
Repeat
WaitWindowEvent()
Until WindowEvent()=#PB_Event_CloseWindow
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Window-Schliessen abfangen
Es liegt daran, dass du in deinem Code 2x auf #PB_Event_CloseWindow prüfst. Einmal in deiner Ende-Prozedur und einmal ganz unten in deiner Eventschleife.
Ersetze folgende Zeile:
durch:
Dann klappt es auch mit der Abfrage.
Ersetze folgende Zeile:
Code: Alles auswählen
Until WindowEvent()=#PB_Event_CloseWindow
Code: Alles auswählen
ForEver
Re: Window-Schliessen abfangen
Gott bin ich doof!!!!
Macht der Gewohnheit!
Einfach 'Standard-Mässig "Copy'n'Past"...,
Merci und 'nen schönen Tag noch
Olaf
Macht der Gewohnheit!
Einfach 'Standard-Mässig "Copy'n'Past"...,
Merci und 'nen schönen Tag noch
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic