mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-07 08:20:18 +00:00
70 lines
2.7 KiB
Text
70 lines
2.7 KiB
Text
|
{{QBDLDATE:05-20-2022}}
|
||
|
{{QBDLTIME:23:08:11}}
|
||
|
{{DISPLAYTITLE:_EXIT (function)}}
|
||
|
The [[_EXIT]] function prevents the user from closing a program and indicates if a user has clicked the close button in the window title ('''X''' button) or used CTRL + BREAK.
|
||
|
|
||
|
|
||
|
{{PageSyntax}}
|
||
|
:{{Parameter|exitSignal%}} = [[_EXIT]]
|
||
|
|
||
|
|
||
|
{{PageDescription}}
|
||
|
* Once the [[_EXIT]] function is used, the user can no longer manually exit the program until it is ended with [[END]] or [[SYSTEM]].
|
||
|
* [[_EXIT]] returns any exit requests made after the initial call as:
|
||
|
:: 0 = no exit request has been made since _EXIT monitoring began in the program.
|
||
|
:: 1 = exit attempted by clicking the window X (close) button since last function call. (Bit 0 set)
|
||
|
:: 2 = exit attempted with CTRL + BREAK since last call. (Bit 1 set)
|
||
|
:: 3 = both CTRL + BREAK and the X box have been used since last call. (Bit 0 and 1 set)
|
||
|
* If a return value is not 0 the program can handle an exit request at a more convenient time if necessary.
|
||
|
* After being read, the _EXIT value is reset to 0 so store the value when a program delays an exit request.
|
||
|
* '''Note: Once _EXIT has been used once, you must monitor your program by checking it for user _EXIT requests.'''
|
||
|
* Don't just use _EXIT once to prevent a user from exiting a program early, as that constitutes bad practice.
|
||
|
|
||
|
|
||
|
{{PageExamples}}
|
||
|
''Example 1:'' Using an ON TIMER check to read the _EXIT request return values.
|
||
|
{{CodeStart}}
|
||
|
q = {{Cl|_EXIT (function)|_EXIT}} 'function read prevents any program exit at start of program
|
||
|
{{Cl|ON TIMER (n)|ON TIMER}}(5) {{Cl|GOSUB}} quit
|
||
|
{{Cl|TIMER}} ON
|
||
|
{{Cl|PRINT}} " The Timer will check for exit request every 5 seconds."
|
||
|
{{Cl|PRINT}} "Click the X box and/or Ctrl - Break to see the {{Cl|_EXIT (function)|_EXIT}} return!"
|
||
|
{{Cl|PRINT}} " Any Key Quits"
|
||
|
{{Cl|PRINT}}
|
||
|
{{Cl|DO}}: {{Cl|_LIMIT}} 30
|
||
|
' ' simulated program loop
|
||
|
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} <> ""
|
||
|
{{Cl|END}}
|
||
|
|
||
|
quit:
|
||
|
q = {{Cl|_EXIT (function)|_EXIT}}
|
||
|
{{Cl|IF}} q {{Cl|THEN}} {{Cl|PRINT}} q;
|
||
|
{{Cl|SELECT CASE}} q
|
||
|
{{Cl|CASE}} 1: {{Cl|PRINT}} "= X button was clicked"
|
||
|
{{Cl|CASE}} 2: {{Cl|PRINT}} "= Ctrl + Break keypress"
|
||
|
{{Cl|CASE}} 3: {{Cl|PRINT}} "= Both X and Ctrl + Break!"
|
||
|
{{Cl|END SELECT}}
|
||
|
{{Cl|RETURN}}
|
||
|
{{CodeEnd}}
|
||
|
|
||
|
|
||
|
''Example 2:'' Removing temporary files before closing a program upon a user's exit request.
|
||
|
{{CodeStart}}
|
||
|
x = {{Cl|_EXIT}} 'initial function call blocks a user exit
|
||
|
OPEN "t3mpdata.tmp" FOR APPEND AS #1
|
||
|
DO
|
||
|
IF {{Cl|_EXIT}} THEN {{Cl|CLOSE}}: {{Cl|KILL}} "t3mpdata.tmp": {{Cl|_DELAY}} 1: {{Cl|SYSTEM}}
|
||
|
LOOP
|
||
|
{{CodeEnd}}
|
||
|
<center>{{text|Note: If you have a file named ''t3mpdata.tmp'' change the file name!|red}}</center>
|
||
|
|
||
|
|
||
|
{{PageSeeAlso}}
|
||
|
* [[SYSTEM]]
|
||
|
* [[END]]
|
||
|
* [[EXIT]]
|
||
|
|
||
|
|
||
|
{{PageNavigation}}
|
||
|
|