Announcement

Collapse
No announcement yet.

Windows cannot end this program

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lynn Wakefield
    replied
    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)!

    Leave a comment:


  • Chris Holbrook
    replied
    Originally posted by Guy Dombrowski View Post
    ... everything works like a charm.
    how rare is that!

    Leave a comment:


  • Guy Dombrowski
    replied
    Beep

    Just noticed that the beep came from your code Chris.
    Removed it and everything works like a charm.

    Leave a comment:


  • Guy Dombrowski
    replied
    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:


  • Chris Holbrook
    replied
    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:


  • Paul Dixon
    replied
    Lynn,
    try adding this line to the start of your code:
    Code:
    #BREAK ON
    Paul.

    Leave a comment:


  • Chris Holbrook
    replied
    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:


  • Lynn Wakefield
    replied
    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
    TIA Lynn

    Leave a comment:


  • Richard Angell
    replied
    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:


  • Lynn Wakefield
    started a topic Windows cannot end this program

    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 Lynn
Working...
X