TweetFollow Us on Twitter

Light thru Windows
Volume Number:1
Issue Number:4
Column Tag:Basic school

Light thru the Windows

By Dave Kelly

Let’s put some light on the subject of windows. Almost everything you write in Microsoft BASIC 2.0 requires some window programming. This is especially true if you want your program to conform to the Macintosh user interface. First, a rundown on the commands we have available to program our windows:

WINDOW window-id [title ]
                [,[rectangle ][, type ]]]
WINDOW CLOSE window-id
WINDOW OUTPUT window-id
WINDOW OUTPUT #file-number

The window-id identifies the output window. Window-id is a number from 1 to 4. This means that you may only have up to 4 windows open at any one time. BASIC opens up Window 1 when BASIC starts. If this window gets closed you can select the output window from the Windows menu in BASIC or type WINDOW 1 from the command window. A window must be open and specified as the output window before anything can be printed in the window.

The title is the name displayed in the title bar of a document window if the window has a title bar.

The rectangle specifies the location of the window on the Macintosh screen. It is given in the form (x1,y1)-(x2,y2) where (x1,y1) is the upper left corner of the window and (x2,y2) is the lower right corner of the window. This sounds easy but someone out there will probably be confused. The entire Macintosh screen has a resolution of 512 X 342. To open a window which fills the entire screen you could use (0,0)-(512,342). However, you’ll find that the desktop border (for pull down menus will cover the title bar of your document window. The desktop border on the top of the screen is about 40 pixels down from the top. By using (2,40) as the top corner and (510,340) as the bottom corner your window will fill the screen except for the desktop border. A couple of pixels are allowed at the edge of the screen to make it look a little better. So much for filling the entire screen with a window. It can require some trial and error to get your window positioned where you want when you try to center a smaller window on the screen. Other BASIC commands use the rectangle format to specify the location relative to the upper-left corner of the window. The rectangle format in the WINDOW command specifies the location of the window relative to the upper-left corner of the screen.

There are 4 types of windows that are available with type. They are (for type =1-4) :

1. Document window

2. Dialog box with two line border

3. Window with simple one-line border

4. Window with a shadow

Only type 1, the document window, has a size box and a title bar. Also, only type 1 can be moved with the mouse. The other types will not change position on the screen without redefining the window with the WINDOW command. A negative type number is called a modal dialog box. In this case any attempt to select outside of the window results in a beep.

The WINDOW CLOSE statement closes the indicated window. WINDOW OUTPUT indicates which window will be the window used for output when there are multiple windows. This allows you to send output to another window without changing the active window. If a file-number is indicated instead of a window-id, the output will be sent to the indicated file. Currently, only files opened to LPT1: are valid with this statement. As other devices which support graphics are made available, this will change.

Info About Windows

The window function WINDOW(n) returns information about the windows. If n = 0, the function returns the window-id of the active output window. n = 1 returns the window-id of the current output window. This is the window where output will be sent. n = 2 gives the width of the current output window and n = 3 returns the height of the current output window. n = 4 and n = 5 returns the x and y coordinate (respectively) in the current output window where the next character will be drawn. This function may be used to determine where the next character or section of a drawing should continue.

Our sample window shows how these commands are used to control windows. The program sets up all four windows as type 1 (document with size box and title). Information about each window is printed in the window. The information about the width and height might be used when trying to get just the right sized window for your program.

An important thing to note when working with windows is that everything does not happen automatically as you may be used to when moving, opening, or closing windows in application programs you may have run. You have to do everything which you took for granted before. For some people this may be hard to figure out, but just try to imitate the way the commercial applications are supposed to use the Macintosh user interface. Try this with my sample program: move one of the windows on top of another and then back again. The printed information which may have been destroyed by overlaying a window over another needs to be refreshed. Changing the size box has the same effect.

REFRESHING WINDOWS

The DIALOG(5) function returns the window-id of the window which needs to be refreshed. Updating a window is not automatically performed but must be done by the program. In the Event: subroutine when DIALOG(0) sets d=5, the output window is set to the window indicated by DIALOG(5) and the window is printed again. It would be desirable to setup a subroutine to refresh windows if this feature is desired. Just for fun, delete the line that starts with IF d=5 THEN WINDOW OUTPUT DIALOG(5) and then run the program. You can see that the window will not be automatically refreshed without this event trapping. In some programs you may not want to refresh all (or even any) of the windows.

The printwindowinfo: subroutine prints the information on the current output window. You can change this and print your own message if you like. Try changing the window type just to see what it will do.

The command LOCATE[row][,column] positions the pen at a specified row and column in the output window. This position is with respect to the upper-left corner of the current output window. Since most fonts are proportionally spaced, the spacing is that of the letter “0”, because it is an average width for most fonts. Another way to control the location of the pen is the use of CALL GETPEN, CALL MOVETO(x,y) or CALL MOVE(xdelta,ydelta). (Note: MSBASIC 2.0 allows you to optionally leave off the word CALL and just use the routine name-useful for creating your own basic commands by calling machine language routines).

Notice that by selecting the active window from the pull down menu causes a different result than clicking on the window. When the window is clicked it is selected as both the active and output window. By selecting from the menus, one window can be active while output is going to another. This is exactly the same procedure used when refreshing the screen. This is observed by changing the output window from the menu. To return to BASIC, use the quit menu.

You now have an introduction to windows. The important thing to remember is that you must control where windows are opened, and which windows are selected or deselected, and which window is the output window. For simple programs which only need a place to print, the statement WINDOW creates an output window if none currently exsists and makes it active. Your program will have to do the work of deciding what should be done with each window, as it is not automatic. Do you have some questions or programming tips to share with MacTutor’s reader’s? Send your questions or contributions to BASIC SCHOOL care of MacTutor, P.O. Box 846, Placentia, CA. 92670.


‘   Window Demo
‘   by Dave Kelly
‘   MACTUTOR   March 1985

‘SET UP MENUS
MENU 4,0,1,”Quit”
MENU 4,1,1,”Return to BASIC”
MENU 5,0,1,”Output Window”
MENU 5,1,1,”Window 1"
MENU 5,2,0, “-” ‘MENU DASH LINE
MENU 5,3,1,”Window 2"
MENU 5,4,0, “-”
MENU 5,5,1,”Window 3"
MENU 5,6,0, “-”
MENU 5,7,1,”Window 4"
MENU 6,0,1,”Active Window”
MENU 6,1,1,”Window 1"
MENU 6,2,0, “-”
MENU 6,3,1,”Window 2"
MENU 6,4,0, “-”
MENU 6,5,1,”Window 3"
MENU 6,6,0, “-”
MENU 6,7,1,”Window 4"

‘TURN ON MENU SELECT TRAP
ON MENU GOSUB menus:MENU ON

‘SET UP WINDOWS and PRINT INFO

WINDOW 1,”Window 1",(2,40)-(252,190)
GOSUB printwindowinfo
WINDOW 2,”Window 2",
                  (260,40)-(510,190)
GOSUB printwindowinfo
WINDOW 3,”Window 3",
                  (2,195)-(252,345)
GOSUB printwindowinfo
WINDOW 4,”Window 4",
                  (260,195)-(510,345)
GOSUB printwindowinfo
DIALOG ON

‘ENABLE EVENT TRAP

ON DIALOG GOSUB Event
pause:GOTO pause

Event:
    
d=DIALOG(0)    ‘EVENT OCCURED
    ‘d=3  USER CLICKED INACTIVE WINDOW
    IF d=3 THEN window.picked=
        DIALOG(3):WINDOW window.picked
    ‘d=4  USER CLICKED GO-AWAY BOX
    IF d=4 THEN window.closed=
        DIALOG(4):WINDOW CLOSE
        window.closed
    ‘d=5  WINDOW NEEDS TO BE REFRESHED
    IF d=5 THEN WINDOW OUTPUT
          DIALOG(5):GOSUB printwindowinfo
RETURN

menus: 

‘THIS HANDLES MENUS

menunumber=MENU(0)
menuitem=MENU(1):MENU
IF menunumber<>4 THEN menu5
‘MENU 4 QUITS
MENU RESET:END
menu5:IF menunumber<>5 THEN menu6    ‘MENU 5 SELECTS OUTPUT WINDOW

IF menuitem=1 THEN WINDOW OUTPUT 1
IF menuitem=3 THEN WINDOW OUTPUT 2
IF menuitem=5 THEN WINDOW OUTPUT 3
IF menuitem=7 THEN WINDOW OUTPUT 4
GOSUB printwindowinfo
RETURN

menu6:

IF menunumber<>6 THEN RETURN    ‘MENU 6 SELECTS ACTIVE WINDOW
menuitem=MENU(1):MENU
IF menuitem=1 THEN WINDOW  1
IF menuitem=3 THEN WINDOW  2
IF menuitem=5 THEN WINDOW  3
IF menuitem=7 THEN WINDOW  4
GOSUB printwindowinfo
RETURN

printwindowinfo:

LOCATE 1,1
PRINT”Current active window is “;
           WINDOW(0)
PRINT”Current output window is “;
           WINDOW(1)
PRINT”Window width is “;WINDOW(2)
PRINT”Window height is “;WINDOW(3)
RETURN
 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Tor Browser Bundle 7.0.7 - Anonymize Web...
The Tor Browser Bundle is an easy-to-use portable package of Tor, Vidalia, Torbutton, and a Firefox fork preconfigured to work together out of the box. It contains a modified copy of Firefox that... Read more
Data Rescue 5.0.1 - Powerful hard drive...
Data Rescue’s new and improved features let you scan, search, and recover your files faster than ever before. We have modernized the file-preview capabilities, added new files types to the recovery... Read more
Alfred 3.5.1 - Quick launcher for apps a...
Alfred is an award-winning productivity application for OS X. Alfred saves you time when you search for files online or on your Mac. Be more productive with hotkeys, keywords, and file actions at... Read more
Tunnelblick 3.7.3 - GUI for OpenVPN.
Tunnelblick is a free, open source graphic user interface for OpenVPN on OS X. It provides easy control of OpenVPN client and/or server connections. It comes as a ready-to-use application with all... Read more
DEVONthink Pro 2.9.16 - Knowledge base,...
Save 10% with our exclusive coupon code: MACUPDATE10 DEVONthink Pro is your essential assistant for today's world, where almost everything is digital. From shopping receipts to important research... Read more
AirRadar 4.0 - $9.95
With AirRadar, scanning for wireless networks is now easier and more personalized! It allows you to scan for open networks and tag them as favourites or filter them out. View detailed network... Read more
ForkLift 3.0.8 Beta - Powerful file mana...
ForkLift is a powerful file manager and ferociously fast FTP client clothed in a clean and versatile UI that offers the combination of absolute simplicity and raw power expected from a well-executed... Read more
Opera 48.0.2685.50 - High-performance We...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
FotoMagico 5.5 - Powerful slideshow crea...
FotoMagico lets you create professional slideshows from your photos and music with just a few, simple mouse clicks. It sports a very clean and intuitive yet powerful user interface. High image... Read more
Adobe Audition CC 2018 11.0.0 - Professi...
Audition CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Audition customer). Adobe Audition CC 2018 empowers you to create and... Read more

Wheels of Aurelia (Games)
Wheels of Aurelia 1.0.1 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0.1 (iTunes) Description: | Read more »
Halcyon 6: Starbase Commander guide - ti...
Halcyon 6 is a well-loved indie RPG with stellar tactical combat and some pretty good writing, too. It's now landed on the App Store, so mobile fans, if you're itching for a good intergalactic adventure, here's your game. Being a strategy RPG, the... | Read more »
Game of Thrones: Conquest guide - how to...
Fans of base building games might be excited to know that yet another entry in the genre has materialized - Game of Thrones: Conquest. Yes, you can now join the many kingdoms of the famed book series, or create your own, as you try to conquer... | Read more »
Halcyon 6: Starbase Commander (Games)
Halcyon 6: Starbase Commander 1.4.2.0 Device: iOS Universal Category: Games Price: $6.99, Version: 1.4.2.0 (iTunes) Description: An epic space strategy RPG with base building, deep tactical combat, crew management, alien diplomacy,... | Read more »
Legacy of Discord celebrates its 1 year...
It’s been a thrilling first year for fans of Legacy of Discord, the stunning PvP dungeon-crawling ARPG from YOOZOO Games, and now it’s time to celebrate the game’s first anniversary. The developers are amping up the festivities with some exciting... | Read more »
3 reasons to play Thunder Armada - the n...
The bygone days of the Battleship board game might have past, but naval combat simulators still find an audience on mobile. Thunder Armada is Chinese developer Chyogames latest entry into the genre, drawing inspiration from the explosive exchanges... | Read more »
Experience a full 3D fantasy MMORPG, as...
Those hoping to sink their teeth into a meaty hack and slash RPG that encourages you to fight with others might want to check out EZFun’s new Eternity Guardians. Available to download for iOS and Android, Eternity Guardians is an MMORPG that lets... | Read more »
Warhammer Quest 2 (Games)
Warhammer Quest 2 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Dungeon adventures in the Warhammer World are back! | Read more »
4 of the best Halloween updates for mobi...
Halloween is certainly one of our favorite times for mobile game updates. Many popular titles celebrate this spooky season with fun festivities that can stretch from one week to even the whole month. As we draw closer and closer to Halloween, we'... | Read more »
Fire Rides guide - how to swing to succe...
It's another day, which means another Voodoo game has come to glue our hands to our mobile phones. Yes, it's been an especially prolific month for this particular mobile publisher, but we're certainly not complaining. Fire Rides is yet another... | Read more »

Price Scanner via MacPrices.net

Apple restocks full line of refurbished 13″ M...
Apple has restocked a full line of Apple Certified Refurbished 2017 13″ MacBook Pros for $200-$300 off MSRP. A standard Apple one-year warranty is included with each MacBook, and shipping is free.... Read more
13″ 3.1GHz/256GB MacBook Pro on sale for $167...
Amazon has the 2017 13″ 3.1GHz/256GB Space Gray MacBook Pro on sale today for $121 off MSRP including free shipping: – 13″ 3.1GHz/256GB Space Gray MacBook Pro (MPXV2LL/A): $1678 $121 off MSRP Keep an... Read more
13″ MacBook Pros on sale for up to $120 off M...
B&H Photo has 2017 13″ MacBook Pros in stock today and on sale for up to $120 off MSRP, each including free shipping plus NY & NJ sales tax only: – 13-inch 2.3GHz/128GB Space Gray MacBook... Read more
15″ MacBook Pros on sale for up to $200 off M...
B&H Photo has 15″ MacBook Pros on sale for up to $200 off MSRP. Shipping is free, and B&H charges sales tax in NY & NJ only: – 15″ 2.8GHz MacBook Pro Space Gray (MPTR2LL/A): $2249, $150... Read more
Roundup of Apple Certified Refurbished iMacs,...
Apple has a full line of Certified Refurbished 2017 21″ and 27″ iMacs available starting at $1019 and ranging up to $350 off original MSRP. Apple’s one-year warranty is standard, and shipping is free... Read more
Sale! 27″ 3.8GHz 5K iMac for $2098, save $201...
Amazon has the 27″ 3.8GHz 5K iMac (MNED2LL/A) on sale today for $2098 including free shipping. Their price is $201 off MSRP, and it’s the lowest price available for this model (Apple’s $1949... Read more
Sale! 10″ Apple WiFi iPad Pros for up to $100...
B&H Photo has 10.5″ WiFi iPad Pros in stock today and on sale for $50-$100 off MSRP. Each iPad includes free shipping, and B&H charges sales tax in NY & NJ only: – 10.5″ 64GB iPad Pro: $... Read more
Apple iMacs on sale for up to $130 off MSRP w...
B&H Photo has 21-inch and 27-inch iMacs in stock and on sale for up to $130 off MSRP including free shipping. B&H charges sales tax in NY & NJ only: – 27″ 3.8GHz iMac (MNED2LL/A): $2179 $... Read more
2017 3.5GHz 6-Core Mac Pro on sale for $2799,...
B&H Photo has the 2017 3.5GHz 6-Core Mac Pro (MD878LL/A) on sale today for $2799 including free shipping plus NY & NJ sales tax only . Their price is $200 off MSRP. Read more
12″ 1.2GHz Space Gray MacBook on sale for $11...
Amazon has the 2017 12″ 1.2GHz Space Gray Retina MacBook on sale for $100 off MSRP. Shipping is free: 12″ 1.2GHz Space Gray MacBook: $1199.99 $100 off MSRP Read more

Jobs Board

Product Manager - *Apple* Pay on the *Appl...
Job Summary Apple is looking for a talented product manager to drive the expansion of Apple Pay on the Apple Online Store. This position includes a unique Read more
*Apple* Retail - Multiple Positions - Farmin...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Frameworks Engineer, *Apple* Watch - Apple...
Job Summary Join the team that is shaping the future of software development for Apple Watch! As a software engineer on the Apple Watch Frameworks team you will Read more
*Apple* News Product Marketing Mgr., Publish...
Job Summary The Apple News Product Marketing Manager will work closely with a cross-functional group to assist in defining and marketing new features and services. Read more
Fraud Analyst, *Apple* Advertising Platform...
Job Summary Apple Ad Platforms has an opportunity to redefine advertising on mobile devices. Apple reaches hundreds of millions of iPhone, iPod touch, and iPad Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.