Windows cannot end this program
You guys (& gals) are great! Thanks to all for the help!
Paul, your #BREAK ON fixed it, The program even closes faster!
Guy, I am going to start working with the Graphical Console & may need a little help along the way.
Thanks again, problem solved! Lynn (male)!
Announcement
Collapse
No announcement yet.
Windows cannot end this program
Collapse
X
-
Originally posted by Guy Dombrowski View Post... everything works like a charm.
Leave a comment:
-
Beep
Just noticed that the beep came from your code Chris.
Removed it and everything works like a charm.
Leave a comment:
-
Ending console program
Chris,
I tested your code with PBCC5 and it does work but I had to add END after the SLEEP 1000 instruction in order to shut down the program.
You can hear the Beep sound coming from the Windows Error but it is the only drawback.
Lynn, why not starting to work with a Graphical Console like the demo I posted here a few days ago ?
It is a bit more work but the result is well worth it.
Leave a comment:
-
or even add a consolectrlhadndler as below from thread http://www.powerbasic.com/support/pb...ighlight=close:
... I should have said that it is untested with V5 of PBCC, which I am too tight to buy.
Code:#COMPILE EXE #DIM ALL #INCLUDE "win32api.inc" GLOBAL test,n1(),a AS STRING GLOBAL x,z,zz,Flagg,row,col,block,BlockNum() AS LONG FUNCTION ConsoleHandler(BYVAL dwEvent AS DWORD) AS LONG BEEP 'Alt + F4 not trapped here, Ctrl-C not working either SELECT CASE dwEvent CASE %CTRL_BREAK_EVENT PRINT "Ctrl-Break pressed" CASE %CTRL_CLOSE_EVENT PRINT "[x] Close clicked" CASE %CTRL_LOGOFF_EVENT PRINT "User logging off or restarting" CASE %CTRL_SHUTDOWN_EVENT PRINT "System shutting down" END SELECT SLEEP 1000 END FUNCTION FUNCTION PBMAIN () AS LONG DIM n1(1 TO 81) AS STRING DIM BlockNum(1 TO 81) AS LONG SetConsoleCtrlHandler CODEPTR(ConsoleHandler), 1 Flagg = 0 ' Print to printer 0 = Screen IF Flagg THEN XPRINT ATTACH DEFAULT XPRINT WIDTH 2 XPRINT FONT "New Courier",7,0 END IF FOR z = 1 TO 81 BlockNum(z) = CEIL(z/3 MOD z) MOD 3.1 IF z > 27 THEN BlockNum(z) = BlockNum(z) + 3 IF z > 54 THEN BlockNum(z) = BlockNum(z) + 4 NEXT z CLS IF Flagg THEN XPRINT " z row col block" ELSE _ PRINT " z row col block" IF Flagg THEN XPRINT "------------------------------------------------" ELSE _ PRINT "------------------------------------------------" FOR z = 1 TO 81 IF z = 28 OR z = 55 THEN IF Flagg THEN XPRINT " " ELSE PRINT " " row = CEIL(z / 9) col = CEIL(z MOD 9.1) IF z = 55 AND Flagg = 0 THEN WAITKEY$ CLS PRINT " z row col block" PRINT "------------------------------------------------" END IF block = CEIL(z/3 MOD z) MOD 3.1 IF row >3 THEN block = block + 3 IF row >6 THEN block = block + 4 IF Flagg AND z < 10 THEN XPRINT " "; IF Flagg THEN XPRINT _ STR$(z)+" "+ STR$(row)+" "+STR$(col)+" "+STR$(BlockNum(z)) ELSE _ PRINT z,row,col,BlockNum(z) NEXT z zz = CEIL(46 MOD 9.1) IF Flagg THEN XPRINT zz ELSE PRINT zz IF Flagg THEN PRINT "Hit any key to continue . . ." WAITKEY$ SetConsoleCtrlHandler CODEPTR(ConsoleHandler), 0 IF Flagg THEN XPRINT CLOSE END FUNCTION
Last edited by Chris Holbrook; 4 Oct 2008, 06:07 AM.
Leave a comment:
-
Lynn,
try adding this line to the start of your code:
Code:#BREAK ON
Leave a comment:
-
The differences between v4 & v5 are for PowerBasic to explain, but if you add a message loop to your application and deal with WM_CLOSE properly, the problem will go away.
See also this thread: http://www.powerbasic.com/support/pbforums/showthread.php?t=38496
Leave a comment:
-
Windows cannot end this program
All my old programs compiled under PBCC4.04 work ok. If re-run under PBCC5.0 I get the same results (can't end console with the Upper 'X').
Same results if run in the IDE or from windows.
A small example:
Code:#COMPILE EXE #DIM ALL GLOBAL test,n1(),a AS STRING GLOBAL x,z,zz,Flagg,row,col,block,BlockNum() AS LONG FUNCTION PBMAIN () AS LONG DIM n1(1 TO 81) AS STRING DIM BlockNum(1 TO 81) AS LONG Flagg = 0 ' Print to printer 0 = Screen IF Flagg THEN XPRINT ATTACH DEFAULT XPRINT WIDTH 2 XPRINT FONT "New Courier",7,0 END IF FOR z = 1 TO 81 BlockNum(z) = CEIL(z/3 MOD z) MOD 3.1 IF z > 27 THEN BlockNum(z) = BlockNum(z) + 3 IF z > 54 THEN BlockNum(z) = BlockNum(z) + 4 NEXT z CLS IF Flagg THEN XPRINT " z row col block" ELSE _ PRINT " z row col block" IF Flagg THEN XPRINT "------------------------------------------------" ELSE _ PRINT "------------------------------------------------" FOR z = 1 TO 81 IF z = 28 OR z = 55 THEN IF Flagg THEN XPRINT " " ELSE PRINT " " row = CEIL(z / 9) col = CEIL(z MOD 9.1) IF z = 55 AND Flagg = 0 THEN WAITKEY$ CLS PRINT " z row col block" PRINT "------------------------------------------------" END IF block = CEIL(z/3 MOD z) MOD 3.1 IF row >3 THEN block = block + 3 IF row >6 THEN block = block + 4 IF Flagg AND z < 10 THEN XPRINT " "; IF Flagg THEN XPRINT _ STR$(z)+" "+ STR$(row)+" "+STR$(col)+" "+STR$(BlockNum(z)) ELSE _ PRINT z,row,col,BlockNum(z) NEXT z zz = CEIL(46 MOD 9.1) IF Flagg THEN XPRINT zz ELSE PRINT zz IF Flagg THEN PRINT "Hit any key to continue . . ." WAITKEY$ IF Flagg THEN XPRINT CLOSE END FUNCTION
Leave a comment:
-
You need to post code and/or send to [email protected] to get explicit help.
It sounds like you may have an endless loop in the program
Leave a comment:
-
Windows cannot end this program
With the new PBCC5 if I click on X to end the program (console) it works fine on my windows XP home edition computer. But with my windows XP pro computer it shows a box:
"Windows cannot end this program. It may need more time to complete an operation.
To return to Windows and check the status of the program, click Cancel."
It shows 2 boxes - EndNow - Cancel
Any help or fix? TIA LynnTags: None
Leave a comment: