← All posts tagged macOS

FonMax
Mac macOS программы под старые маки были вот такими:

PROGRAM Sample;
{$X-, $0-} {turn off Lisa libraries}
{ The OSES clause brings in the units containing the Pascal interfaces. }
OSES {$0 Obj/MemTypes } MemTypes, {basic Memory Manager data types}
{$0 Obj/QuickDraw} QuickDraw, {interface to QuickDraw}
{$0 Obj/OSIntf } OSIntf, {interface to the Operating System}
{$0 Obj/Toollntf } Toollntf; {interface to the Toolbox}
CONST applelD = 128 {resource IDs/menu IDs for Apple, File, and Edit menus}
filelD = 129
editID = 130
appleM =1 ; {index for each menu in myMenus (array of menu handles)}
fileM = 2;
editM = 3;
menuCount = 3; {total number of menus}
windowID = 128; {resource ID for application's window}
undoCommand '= 1 {menu item numbers identifying commands in Edit menu}
cutCommand = 3
copyCommand = 4
pasteCommand = 5
clearCommand = 6
VAR myMenus: ARRAY[1..menuCpunt] OF MenuHandle; {array of handles to the menus}

...
BEGIN
{ Read menu descriptions from resource file into memory and store handles }
{ in myMenus array }
myMenus[appleM] := GetMenu(applelD) , {read Apple menu from resource file}
AddResMenu(myMenus[appleM],'DRVR'); {add desk accessory names to Apple menu}
myMenus[fileM] := GetMenu(filelD); {read File menu from resource file}
myMenus[editM] := GetMenu(editID); {read Edit menu from resource file}
FOR i:=l TO menuCount DO InsertMenu(myMenus[i],0); {install menus in menu bar }
DrawMenuBar; { and draw menu bar}
END; {of SetOpMenus}
ROCEDURE DoCommand (mResult: LONGINT); Execute command specified by mResult, the result of MenuSelect }
VAR theltem: INTEGER; {menu item number from mResult low-order word}
theMenu: INTEGER; {menu number from mResult high-order word}
name: Str255; {desk accessory name}
temp: INTEGER;
BEGIN
theltem := LoWord(mResult); {call Toolbox Utility routines to set }
theMenu := HiWord(mResult); { menu item number and menu number}
CASE theMenu OF {case on menu ID}
applelD:
BEGIN {call Menu Manager to get desk accessory }
Getltem(myMenus[appleM],theltem,name) . { name, and call Desk Manager to open }
temp := OpenDeskAcc(name); { accessory (OpenDeskAcc result not used)
SetPort(myWindow); {call QuickDraw to restore application }
END; {of applelD} { window as grafPort to draw in (may have

да, паскакаль..