TweetFollow Us on Twitter

ResEdit
Volume Number:3
Issue Number:5
Column Tag:Basic School

Windows with ResEdit

By Dave Kelly, MacTutor Editorial Board

Windows are a fundamental of the Macintosh user interface. Back in March of 1985, Vol. 1 No. 4 of MacTutor (for those of you who were around back then) or starting on page 307 in The Best of MacTutor, Vol 1, I cover the basics of creating windows with MS Basic. I refer you back to this reference for details. (You can get Best of MacTutor, Vol 1, through MacTutor for $24.95). Sorry to say, the new version of MS Basic and the MS Basic Compiler has only a small improvement to windows. MS Basic now allows six windows open at once instead of four. ZBasic has added window capabilities such as additional window types available including the ability to specify Zoom windows, go-away box, grow box, and rounded cornered windows. We can only hope that the next version of MS Basic will be more comprehensive. Notwithstanding this there are a few things that can be mentioned relating to windows.

If you recall, a few months back, during our Basic Wars review, PCMacBasic was the only Basic to allow you to use resources to program your application windows. This is still true, however I have come across a method which allows MS Basic to use window resources as a guide for the window that will be used in Basic. This method is very simple and only requires three calls from the ToolLib library. It does not extend the window creation capabilities, however. Languages which fully support the toolbox will usually allow you to create a window using the WIND (window resource) ID number.

Now you can create your own window resources using ResEdit and Basic will read the resource and create a window looking like the one described by the resource. Well, usually. There are still those types of windows that Basic doesn't support such as the ones with rounded corners of different curvatures. ZBasic does support these other types and a similar method could be used to read the WIND resources from ZBasic.

For now I'll explain what to do to implement this method. You might also get some ideas of other resources you could read and apply the same idea to.

First off, in case you don't know how ResEdit can be used to create your own windows I will briefly explain by walking you though an example. Open up ResEdit and choose 'NEW' from the File menu. I chose to use a separate resource file (named 'Window.rsc') for this example just to be safe. You could use any file to store your resource in just like the library CODE resources. Next (with the new file open) open up a new resource by selecting 'NEW' from the File menu. Create a resource of type 'WIND' by selecting or typing the proper type when asked.

At this point ResEdit gives you a default window which can be sized and placed where ever you want it. The move the window drag it near the title bar just like you would move a window when using the Finder. To resize the window you drag the lower right corner of the window to the size you want.

Now select Get Info from the File menu to adjust the window ID# if necessary. Usually you are safe to just use the number that ResEdit assigns the WIND resource. In this example I used 3041 through 3044 for the four windows that I created. You will have to create your own resources to use the example program. Be sure to use the same ID numbers in the program that you use as your resource ID.

There are two ways to view WIND resources with ResEdit. The first is graphically which is the mode you get when you first open a WIND resource. The second way is to display the WIND resource parameters as text. If you want different window types you can select Display text to show the actual window resource parameters.

The ProcID is the parameter which indicates the window type. The ProcID numbers are shown in Inside Macintosh as:

CONST documentProc = 0;
 dBoxProc = 1;
 plainDBox = 2;
 altDBoxProc = 3;
 noGrowDocProc = 4;
 rDocProc = 16;

Since not all of these are supported by MS Basic the example program will ignore those that it doesn't understand and use the default document window. You could probably try this same method using ZBasic and be able to implement all of the features. Another way to view the resource would be to open it up as General instead of using OPEN in the File menu. Using this we can see how the WIND is organized.

From this HEX representation of the WIND resource and Inside Macintosh (pg. I-302) we see:

$00 2E, the first two bytes represent the top of the window where HEX $00 2E = 46 decimal.

$00 0A, the 3rd and 4th bytes represent the left of the window where HEX $00 0A = 10 decimal.

$00 AC, the 5th and 6th bytes represent the bottom of the window where HEX $00 AC = 170 decimal.

$01 4E, the 7th and 8th bytes represent the right side of the window where HEX $01 4E = 202 decimal.

$00 00, the 9th and 10th bytes represent the ProcID parameter.

$01 00, the 11th and 12th bytes represent the visible parameter.

$01 00, the 13th and 14th bytes represent the goAwayFlag parameter.

$00 00 00 00, the 15th through 18th bytes is the refCon parameter.

$08, the 16th byte represents the length of the window title (the next 8 bytes) where $57 69 6E 64 6F 77 20 31 is 'Window 1' when converted via ASCII codes.

The only thing left to finish the new resources now is to close the resource file and quit ResEdit. The example Basic listing below will read the resource file and store it in and array where the information can be used to create a window that looks the same as the one created in ResEdit using the standard MS Basic window command. This is accomplished with the aid of three ToolLib calls. The first is OpenResFile, used to open the desired resource file. The last is CloseResFile, used to close the resource file. The trick comes in using LoadArray to read in data from an open resource and place it in a pre-dimensioned array. Since the data that is read is not in the same format that Basic expects for variables, it is necessary to read each by and decode or convert the data to MS Basic variables which we can use in the Window statement. The subroutine GetResWindow demonstrates which byte to peek to get the desired results. The variable pointer must be explicitly defined in each of the peek statements or the data may not come back correctly. You may only need to read back the parts that will be used in your program.

An optional way of doing this would be to manually write down what the window size and type etc. after creating the window with ResEdit (then you wouldn't need to actually save the window resources) and then use these numbers to create your new window. This would make the Basic code shorter, but might not be quite as accessible to modification after it is compiled (provided you intend to compile your application).

As mentioned last month, there are still some serious problems with HFS and MS Basic. Until this is fixed, the use of resources is somewhat restricted. Since a compiled MS Basic application does not have an automatic way (a way in which the user doesn't have to be aware of what is going on) to find the volume which itself is located, we will have to live with the problem until Microsoft releases an improved version. (Sooner the better).

'WIND Resource Demo ©MacTutor™ 1987 By Dave Kelly

Libname$="Hard Disk:Basic:MS ToolLib:ToolLib"  'full path name
LIBRARY Libname$
WINDResname$="Hard Disk:MacTutor™:May87:Window.rsc"
WIDTH 40
DIM a(40)
FOR i=1 TO 4
ID%=3040+i
CALL GetResWindow(WINDResname$,ID%,top,left,bottom, right,     ProcID, 
TitleLength, Title$)
type=1
IF ProcID= 0 THEN type=1
IF ProcID=1 THEN type=2
IF ProcID=2 THEN type=3
IF ProcID=3 THEN type=4
WINDOW i,Title$,(left,top)-(right,bottom),type
PRINT "Top= ";top,"Left= ";left,"Bottom= ";bottom,"Right=      
 ";right
PRINT "ProcID = ";ProcID
PRINT "TitleLength = ";TitleLength
PRINT "Title = ";Title$
PRINT "Click mouse to continue"
WHILE MOUSE(0)<>1:WEND
NEXT i
END
SUB GetResWindow (WINDResname$,ID%, top,left,bottom,right,     ProcID, 
TitleLength, Title$) STATIC
ref%=0
type$="WIND"
openresfile WINDResname$,ref%
loadArray ref%,ID%,a(1),type$
top=PEEK(VARPTR(a(1)))*256+PEEK(VARPTR(a(1))+1)
left=PEEK(VARPTR(a(1))+2)*256+PEEK(VARPTR(a(1))+3)
bottom=PEEK(VARPTR(a(1))+4)*256+PEEK(VARPTR(a(1))+5)
right=PEEK(VARPTR(a(1))+6)*256+PEEK(VARPTR(a(1))+7)
ProcID=PEEK(VARPTR(a(1))+8)*256+PEEK(VARPTR(a(1))+9)
TitleLength=PEEK(VARPTR(a(1))+18)
closeResFile ref%
Title$=""
FOR i=1 TO TitleLength
    Title$=Title$+CHR$(PEEK(VARPTR(a(1))+i+18))
NEXT
END SUB

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Dropbox 193.4.5594 - Cloud backup and sy...
Dropbox is a file hosting service that provides cloud storage, file synchronization, personal cloud, and client software. It is a modern workspace that allows you to get to all of your files, manage... Read more
Google Chrome 122.0.6261.57 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Skype 8.113.0.210 - Voice-over-internet...
Skype is a telecommunications app that provides HD video calls, instant messaging, calling to any phone number or landline, and Skype for Business for productive cooperation on the projects. This... Read more
Tor Browser 13.0.10 - Anonymize Web brow...
Using Tor Browser you can protect yourself against tracking, surveillance, and censorship. Tor was originally designed, implemented, and deployed as a third-generation onion-routing project of the U.... Read more
Deeper 3.0.4 - Enable hidden features in...
Deeper is a personalization utility for macOS which allows you to enable and disable the hidden functions of the Finder, Dock, QuickTime, Safari, iTunes, login window, Spotlight, and many of Apple's... Read more
OnyX 4.5.5 - Maintenance and optimizatio...
OnyX is a multifunction utility that you can use to verify the startup disk and the structure of its system files, to run miscellaneous maintenance and cleaning tasks, to configure parameters in the... Read more
Hopper Disassembler 5.14.1 - Binary disa...
Hopper Disassembler is a binary disassembler, decompiler, and debugger for 32- and 64-bit executables. It will let you disassemble any binary you want, and provide you all the information about its... Read more
WhatsApp 24.3.78 - Desktop client for Wh...
WhatsApp is the desktop client for WhatsApp Messenger, a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS. WhatsApp Messenger is available for... Read more
War Thunder 2.33.0.135 - Multiplayer war...
In War Thunder, aircraft, attack helicopters, ground forces and naval ships collaborate in realistic competitive battles. You can choose from over 1,500 vehicles and an extensive variety of combat... Read more
Iridient Developer 4.2 - Powerful image-...
Iridient Developer (was RAW Developer) is a powerful image-conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more

Latest Forum Discussions

See All

A Legitimate Massage Parlor, I Swear – T...
In this week’s Episode of The TouchArcade Show we talk about some of the major new releases on mobile this week including Warframe, we go over all the major news that came out from the Nintendo Direct Partner Showcase on Wednesday, we read our one... | Read more »
TouchArcade Game of the Week: ‘Rainbow S...
I feel like I am in a fever dream right now. What is this game that I’m playing? It’s a Rainbow Six game? But it’s all cutesy, and cartoony, and also kind of psychedelic? How is this a real thing? Well, it’s no fever dream, it is indeed a real thing... | Read more »
SwitchArcade Round-Up: ‘Promenade’, ‘Cho...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for February 23rd, 2024. It’s Friday, so we have to check out the remaining releases of the week. Not so many big ones today, but a healthy crop nonetheless. After summarizing all the... | Read more »
Steam Deck Weekly: Gundam Breaker 4 and...
Welcome to this week’s slightly shorter edition of the Steam Deck Weekly. I was a bit unwell this week so no reviews in this edition, but there is a lot of news and new Steam Deck Verified and Playable games to catch up on. I have something special... | Read more »
The 10 Best Run-And-Gun Games for Ninten...
The year 2024 is a rare one, because it is a year with a brand-new Contra game. Contra: Operation Galuga might be the freshest face on the block when it comes to Nintendo Switch run-and-gun action games, but it’s hardly fighting that war alone.... | Read more »
Version 1.4 of Reverse: 1999 will be lan...
Free up your diary for February 29th, as Bluepoch has announced the impending release of the award-winning Reverse: 1999s Version 1.4 update. The Prisoner in the Cave is an Ancient Greece-themed update with new recruits, gameplay modes, and plenty... | Read more »
Premium Mobile RPG ‘Ex Astris’ From ‘Ark...
Arknights developer Hypergryph’s premium RPG Ex Astris () recently had its release date confirmed, and we finally have an extended gameplay showcase. | Read more »
Apple Arcade Weekly Round-Up: Updates fo...
Following yesterday’s big Hello Kitty Island Adventure update, a few more notable game updates and events have gone live on Apple Arcade. Cypher 007 () has gotten its first content update in a few months taking you to Egypt for five new levels... | Read more »
‘Thunder Ray’ and ‘Hime’s Quest’ Are Now...
Crunchyroll has pushed two new games into the Crunchyroll Game Vault including Purple Tree Studio’s Thunder Ray which was already on iOS before as a premium release. Shaun even reviewed it last year. Read his review here. The second game is Poppy... | Read more »
Adorable Kitty-Collector Sequel ‘Neko At...
Ya’ll. This October will mark the ten-year anniversary of Hit Point launching Neko Atsume, the adorable kitty collecting sim that has become a runaway success and essentially created a sub-genre of cozy pet-collecting life sim games. Sure, the... | Read more »

Price Scanner via MacPrices.net

16-inch M3 Max MacBook Pro on sale for $300 o...
Amazon is offering a $300 instant discount on one of Apple’s 16″ M3 Max MacBook Pros today. Shipping is free: – 16″ M3 Max MacBook Pros (36GB/1TB/Space Black): $3199, $300 off MSRP Their price is the... Read more
Apple M2 Mac minis on sale for $100 off MSRP...
B&H Photo has Apple’s M2-powered Mac minis in stock and on sale for $100 off MSRP this weekend with prices available starting at $499. Free 1-2 day shipping is available to most US addresses: –... Read more
Apple Watch SE on sale for $50 off MSRP this...
Best Buy has all Apple Watch SE models on sale this weekend for $50 off MSRP on their online store. Sale prices available for online orders only, in-store prices may vary. Order online, and choose... Read more
Deal Alert! Apple 15-inch M2 MacBook Airs on...
Looking for the lowest sale price on a new 15″ M2 MacBook Air? Best Buy has Apple 15″ MacBook Airs with M2 CPUs in stock and on sale today for $300 off MSRP on their online store. Prices valid for... Read more
Amazon discounts iPad mini 6 models up to $12...
Amazon is offering Apple’s 8.3″ WiFi iPad minis for $100-$120 off MSRP, including free shipping, for a limited time. Prices start at $399. Amazon’s prices are among the lowest currently available for... Read more
Apple AirPods Pro with USB-C discounted to $1...
Walmart has Apple’s 2023 AirPods Pro with USB-C in stock and on sale for $199.99 on their online store. Their price is $50 off MSRP, and it’s currently one the lowest prices available for new AirPods... Read more
Apple has 14-inch M3 MacBook Pro with 16GB of...
Apple has 14″ M3 MacBook Pros with 16GB of RAM, Certified Refurbished, available for $270-$300 off MSRP. Each model features a new outer case, shipping is free, and an Apple 1-year warranty is... Read more
Save $318-$432 on 16-inch M3 Max MacBook Pros...
Apple retailer Expercom has 16″ M3 Max MacBook Pros on sale for $318-$432 off MSRP when bundled with a 3-year AppleCare+ Protection Plan. Discounts are available for Silver models as well a Space... Read more
New today at Apple: 16-inch M3 Pro/M3 Max Mac...
Apple is now offering 16″ M3 Pro and M3 Max MacBook Pros, Certified Refurbished, starting at $2119 and ranging up to $530 off MSRP. Each model features a new outer case, shipping is free, and an... Read more
Apple is now offering $300-$480 discounts on...
Apple is now offering 14″ M3 Pro and M3 Max MacBook Pros, Certified Refurbished, starting at $1699 and ranging up to $480 off MSRP. Each model features a new outer case, shipping is free, and an... Read more

Jobs Board

Part-time *Apple* and Peach Research Assist...
…and minimum qualifications: + Assist with planting, pruning, and harvesting of apple and peach trees + Conduct regular maintenance tasks to ensure optimal Read more
Housekeeper, *Apple* Valley Villa - Cassia...
Apple Valley Villa, part of a senior living community, is hiring entry-level Full-Time Housekeepers to join our team! We will train you for this position and offer a Read more
Sublease Associate Optometrist- *Apple* Val...
Sublease Associate Optometrist- Apple Valley, CA- Target Optical Date: Feb 22, 2024 Brand: Target Optical Location: Apple Valley, CA, US, 92307 **Requisition Read more
Sublease Associate Optometrist- *Apple* Val...
Sublease Associate Optometrist- Apple Valley, CA- Target Optical Date: Jan 24, 2024 Brand: Target Optical Location: Apple Valley, CA, US, 92307 **Requisition Read more
Housekeeper, *Apple* Valley Village - Cassi...
Apple Valley Village Health Care Center, a senior care campus, is hiring a Part-Time Housekeeper to join our team! We will train you for this position! In this role, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.