From QB64 Wiki
The _EXIT function prevents a program user exit and indicates if a user has clicked the close X window button or CTRL + BREAK.
- quit% = _EXIT
- Once the _EXIT function is used, the program user can no longer manually exit the program until it ends.
- _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) box 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 a 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! The user may NOT appreciate that!
Example 1: Using an ON TIMER check to read the _EXIT request return values.
q = _EXIT 'function read prevents any program exit at start of program ON TIMER(5) GOSUB quit TIMER ON PRINT " The Timer will check for exit request every 5 seconds." PRINT "Click the X box and/or Ctrl - Break to see the _EXIT return!" PRINT " Any Key Quits" PRINT DO: _LIMIT 30 ' ' simulated program loop LOOP UNTIL INKEY$ <> "" END quit: q = _EXIT IF q THEN PRINT q; SELECT CASE q CASE 1: PRINT "= X button was clicked" CASE 2: PRINT "= Ctrl + Break keypress" CASE 3: PRINT "= Both X and Ctrl + Break!" END SELECT RETURN
Example 2: Removing temporary files before closing a program upon a user's exit request.
- SYSTEM (ends a program without notice and closes the window in QB64 or a Qbasic program run from the command line.)
- END (ends a program displaying "Press any key to continue...".)
- EXIT (ends a loop, SUB or FUNCTION)