
-----------------------------------
YasserSalama
Tue Jun 03, 2008 12:42 pm

Window.Close
-----------------------------------
I have a program where it starts out by giving you two options; start and quit. I used the Window.Close command to get the quit button to work, but all it does is make the program finish and the window to minimize. I want to make it so it totally closes the window. 
Any help would be appreciated.
P.S. You can take out the music file because it won't let the program work if you don't have the file.


View.Set ("graphics:1024;768, offscreenonly, nobuttonbar")
var winID : int
var f1 : int := Font.New ("roaringfire:25:bold")
var f2 : int := Font.New ("roaringfire:50:bold")
var f3 : int := Font.New ("Roaringfire:30:bold")
var mx, my, button : int

process thunder
    Music.PlayFile ("storm-rainthunder5.wav")
end thunder

procedure Font_Pull (Text : string, X, Y, Font1, D, C : int)
    for I : 1 .. length (Text)
        cls
        Font.Draw (Text (1 .. I), X, Y, Font1, C)
        delay (D)
        View.Update
    end for
end Font_Pull

procedure introtext
    Font_Pull ("Two Families", 200, 550, f2, 100, white)
    delay (300)
    Font_Pull ("Sworn enemies from the beginning", 60, 400, f2, 100, white)
    delay (300)
    Font_Pull ("Only one member of each family survives", 1, 200, f3, 100, white)
    delay (300)
    Font_Pull ("And they must fight to finish it all", 50, 600, f2, 100, white)
    delay (500)
    Font_Pull ("Who wins is all up to you", 200, 300, f2, 100, white)
    delay (500)
    cls
end introtext

loop
    colorback (black)
    Font.Draw ("The Rivalry", 320, 550, f2, white)
    drawbox (120, 100, 340, 130, white)
    drawbox (670, 100, 890, 130, white)
    Font.Draw ("Start", 185, 107, f1, white)
    Font.Draw ("Quit", 740, 107, f1, white)
    View.Update
    delay (15)
    cls
    Mouse.Where (mx, my, button)
    if mx > 120 and mx < 340 and my > 100 and my < 130 then
        drawfillbox (120, 100, 340, 130, red)
        if button = 1 then
            cls
            fork thunder
            introtext
            delay (500)
            cls
        end if
    elsif mx > 670 and mx < 890 and my > 100 and my < 130 then
        drawfillbox (670, 100, 890, 130, red)
        if button = 1 then
            Window.Close (winID)
        end if
    end if
end loop


-----------------------------------
SNIPERDUDE
Tue Jun 03, 2008 1:54 pm

RE:Window.Close
-----------------------------------
when you compile it, isn't there an option to close the programme once it is finished?

When you run it from turing it will only minimize it, but when you compile it should ask you if you want to leave it open once done or not.

Hope that helps.

-----------------------------------
jeffgreco13
Tue Jun 03, 2008 2:04 pm

Re: Window.Close
-----------------------------------
Almost positive this is your problem. winID is an empty variable.


var winID: int:= Window.Open(parameters)


You place that code at the top. You don't really need that "View.Set" if you set your parameters properly.

Check out the Turing documentation on exactly how to setup the Window.Open() command.

That should make the window itself have an ID of "winID" so when you call the Window.Close(winID) it will close the main window. Check it out let us know.


EVERYTHING ANSWERED BY GOOD OL' COMPSCI.CA
http://compsci.ca/v3/printview.php?t=8901&start=0

-----------------------------------
Sean
Tue Jun 03, 2008 2:21 pm

Re: Window.Close
-----------------------------------
The above is correct. You made a window variable, but never gave it paramters. That is why nothing happened. 


var winID : int := Window.Open ("graphics:1024;768, offscreenonly, nobuttonbar") 
var f1 : int := Font.New ("roaringfire:25:bold") 
var f2 : int := Font.New ("roaringfire:50:bold") 
var f3 : int := Font.New ("Roaringfire:30:bold") 
var mx, my, button : int 

process thunder 
    Music.PlayFile ("storm-rainthunder5.wav") 
end thunder 

procedure Font_Pull (Text : string, X, Y, Font1, D, C : int) 
    for I : 1 .. length (Text) 
        cls 
        Font.Draw (Text (1 .. I), X, Y, Font1, C) 
        delay (D) 
        View.Update 
    end for 
end Font_Pull 

procedure introtext 
    Font_Pull ("Two Families", 200, 550, f2, 100, white) 
    delay (300) 
    Font_Pull ("Sworn enemies from the beginning", 60, 400, f2, 100, white) 
    delay (300) 
    Font_Pull ("Only one member of each family survives", 1, 200, f3, 100, white) 
    delay (300) 
    Font_Pull ("And they must fight to finish it all", 50, 600, f2, 100, white) 
    delay (500) 
    Font_Pull ("Who wins is all up to you", 200, 300, f2, 100, white) 
    delay (500) 
    cls 
end introtext 

loop 
    colorback (black) 
    Font.Draw ("The Rivalry", 320, 550, f2, white) 
    drawbox (120, 100, 340, 130, white) 
    drawbox (670, 100, 890, 130, white) 
    Font.Draw ("Start", 185, 107, f1, white) 
    Font.Draw ("Quit", 740, 107, f1, white) 
    View.Update 
    delay (15) 
    cls 
    Mouse.Where (mx, my, button) 
    if mx > 120 and mx < 340 and my > 100 and my < 130 then 
        drawfillbox (120, 100, 340, 130, red) 
        if button = 1 then 
            cls 
            fork thunder 
            introtext 
            delay (500) 
            cls 
        end if 
    elsif mx > 670 and mx < 890 and my > 100 and my < 130 then 
        drawfillbox (670, 100, 890, 130, red) 
        if button = 1 then 
            Window.Close (winID) 
        end if 
    end if 
end loop 


-----------------------------------
YasserSalama
Wed Jun 04, 2008 11:57 am

RE:Window.Close
-----------------------------------
Thanks for the help but when I declare the variable winID with parameters, then when I hit quit, the window goes back to the default window (small size, button bar, etc.) I want it to just close totally.

-----------------------------------
YasserSalama
Wed Jun 04, 2008 12:02 pm

RE:Window.Close
-----------------------------------
Oh. I tried putting in two Window.Close commands and it seemed to work. Thanks for the help guys!

-----------------------------------
gitoxa
Wed Jun 04, 2008 12:28 pm

RE:Window.Close
-----------------------------------
Part of the problem might be that your progra mnever actually ends.  It's forever in the main loop until forcefully shut down.

-----------------------------------
Sean
Wed Jun 04, 2008 12:49 pm

Re: Window.Close
-----------------------------------
The reason that it opens a second window, is because you aren't sending your output to your created window. Before you do anything in your procedures, use: Window.Select (WinID)


proc intro
Window.Select (WinID)
%Code Follows This
end intro

