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

Coda 2.6 - One-window Web development su...
Coda is a powerful Web editor that puts everything in one place. An editor. Terminal. CSS. Files. With Coda 2, we went beyond expectations. With loads of new, much-requested features, a few surprises... Read more
File Juicer 4.51 - Extract images, video...
File Juicer is a drag-and-drop can opener and data archaeologist. Its specialty is to find and extract images, video, audio, or text from files which are hard to open in other ways. In computer... Read more
PDFpenPro 8.3 - $124.95
PDFpenPro allows users to edit PDF's easily. Add text, images and signatures. Fill out PDF forms. Merge or split PDF documents. Reorder and delete pages. Create fillable forms and tables of content... Read more
PDFpen 8.3 - $74.95
PDFpen allows users to easily edit PDF's. Add text, images and signatures. Fill out PDF forms. Merge or split PDF documents. Reorder and delete pages. Even correct text and edit graphics! Features... Read more
BetterTouchTool 1.963 - Customize Multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom... Read more
iFFmpeg 6.2.2 - Convert multimedia files...
iFFmpeg is a comprehensive media tool to convert movie, audio and media files between formats. The FFmpeg command line instructions can be very hard to master/understand, so iFFmpeg does all the hard... Read more
ForeverSave 2.1.6 - Universal auto-save...
ForeverSave auto-saves all documents you're working on while simultaneously doing backup versioning in the background. Lost data can be quickly restored at any time. Define your preferred time... Read more
NTFS 14.3.318 - $19.95
This latest version supports the new macOS 10.12 Sierra! NTFS breaks down the barriers between Windows and OS X. Paragon NTFS effectively solves the communication problems between the Mac system and... Read more
BetterTouchTool 1.961 - Customize Multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom... Read more
NTFS 14.3.318 - $19.95
This latest version supports the new macOS 10.12 Sierra! NTFS breaks down the barriers between Windows and OS X. Paragon NTFS effectively solves the communication problems between the Mac system and... Read more

Latest Forum Discussions

See All

Clash of Clans is getting its own animat...
Riding on its unending wave of fame and success, Clash of Clans is getting an animated web series based on its Clash-A-Rama animated shorts.As opposed to the current shorts' 60 second run time, the new and improved Clash-A-Rama will be comprised of... | Read more »
Leaks hint at Pokémon GO and Starbucks C...
Leaked images from a hub for Starbucks employees suggests that a big Pokémon GO event with the coffee giant could begin this very week. The images appeared on Reddit and hint at some exciting new things to come for Niantic's smash hit game. | Read more »
Silent Depth Submarine Simulation (Game...
Silent Depth Submarine Simulation 1.0 Device: iOS Universal Category: Games Price: $7.99, Version: 1.0 (iTunes) Description: | Read more »
Enneas Saga lets you lead your own demon...
Defend the land of Enneas Continent from the forces of evil in the new fantasy MMORPG from Lyto Mobi: Enneas Saga. Can’t wait? No problem. It’s available to download now on Android devices. | Read more »
Great zombie games in the spirit of Dead...
Dead Rising 4 arrives tomorrow, giving enthusiasts a fresh chance to take selfies with zombies and get up to other ridiculous end-of-the-world shenanigans. To really get into the spirit of things, we've gone and gathered the best zombie games that... | Read more »
Amateur Surgeon 4 Guide: Advanced tips a...
Amateur Surgeon 4 is still tackling the competition at the top of the App Store charts, so if you haven't tried it out yet, you should probably do that right away. If you've been at it for a while, though, perhaps you're ready to start expanding... | Read more »
Amateur Surgeon 4 Guide: Become the worl...
It's time to wield your trusty pizza cutter again, as Amateur Surgeon has returned with a whole fresh set of challenges (and some old, familiar ones, too). Starting anew isn't easy, especially when all you have at your disposal is a lighter, the... | Read more »
Le Parker: Sous Chef Extraordinaire (Ga...
Le Parker: Sous Chef Extraordinaire 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: | Read more »
Telltale Games really is working on a Gu...
Telltale Games' next episodic adventure is indeed Guardians of the Galaxy. A document tied to the voice actors strike suggested that the project was in the work, but now we have direct confirmation following an announcement at the Game Awards that... | Read more »
Amateur Surgeon returns to iOS and Andro...
Amateur Surgeon and its two sequels disappeared from the App Store some time and it was sad days for all. But now, just in time for the holidays, the Adult Swim favorite makes its joyous return in the shape of Amateur Surgeon 4, a remake with... | Read more »

Price Scanner via MacPrices.net

Back in stock! 13-inch 2.7GHz Retina MacBook...
Apple has Apple Certified Refurbished 2015 13″ 2.7GHz/128GB Retina MacBook Pros (MF839LL/A) available again for $1099 including free shipping. That’s $200 off MSRP, and it’s the lowest price... Read more
Slate Tablet Market Share to Fall Below 75% i...
After two years of decline, the tablet market is showing signs of new life as productivity trumps entertainment, and tablets become cost-effective computing devices for both entertainment and... Read more
Yostand Launches Indigogo campaign for iStand...
China-based startup Yostand (meaning ‘your stand’), has announced the launch of its Indigogo campaign for their newly awaited iStand7. This product is a one of a kind iPhone battery case that offers... Read more
Green App – Budget Forecasting Now Available...
Indianapolis, Indiana based CoopToons has announced the release of Green – Budget Forecasting 1.5, an update to their personal budgeting app developed exclusively for iOS devices. Green aims to be a... Read more
New 2016 13-inch 2.0GHz MacBook Pros in stock...
Overstock.com has the non-Touch Bar 13″ MacBook Pros in stock today for $150 off MSRP. Shipping is free: - 13″ 2.0GHz MacBook Pro Space Gray (MLL42LL/A): $1349.99 $150 off MSRP - 13″ 2.0GHz MacBook... Read more
15-inch 2.6GHz Silver Touch Bar MacBook Pro o...
Adorama has the new 2016 15″ 2.6GHz Silver Touch Bar MacBook Pro (MLW72LL/A) in stock and available for $2349 including free shipping. Adorama charges sales tax in NY & NJ only. Their price is $... Read more
13-inch MacBook Airs on sale for up to $180 o...
Overstock.com has 13″ MacBook Airs on sale for up to $180 off MSRP including free shipping: - 13″ 1.6GHz/128GB MacBook Air (MMGF2LL/A): $869.99 $130 off MSRP - 13″ 1.6GHz/256GB MacBook Air (sku... Read more
13-inch 2.5GHz MacBook Pro (Apple refurbished...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros (MD101LL/A) available for $829, or $270 off original MSRP. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook... Read more
Monday roundup of Holiday Mac sales: Up to $3...
Take up to $300 off MSRP on the price of a new Apple Mac at B&H Photo today as part of their Holiday sale. Shipping is free, and B&H charges NY sales tax only. Touch Bar MacBook Pros are in... Read more
12-inch WiFi Apple iPad Pros on sale for up t...
B&H Photo has 12″ WiFi Apple iPad Pros on sale for up to $50 off MSRP, each including free shipping. B&H charges sales tax in NY only: - 12″ Space Gray 32GB WiFi iPad Pro: $749 $50 off MSRP... Read more

Jobs Board

*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Lead *Apple* Solutions Consultant - Apple (...
# Lead Apple Solutions Consultant Job Number: 53586123 Pittsburgh, Pennsylvania, United States Posted: Nov. 28, 2016 Weekly Hours: 40.00 **Job Summary** The Lead ASC Read more
*Apple* Retail - Multiple Positions- Plano,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions- Kansas...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions- Chicago...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.