VAR u :Window
作成されたWindowデータが納められる。
MODULE DrawStar;
FROM
GraphicWindows
IMPORT
Window,
OpenGraphicWindow,
CloseGraphicWindow,
SetPen,
TurnTo,
Move;
FROM
EventBase
IMPORT
mouseDown,
Point,
EventRecord,
PushTask,
PopTask,
PollEventTasks;
VAR
wndStar :Window;
blnDone :BOOLEAN;
tskMouse :INTEGER;
PROCEDURE TrackMouse(VAR recEvent :EventRecord) :BOOLEAN;
BEGIN
IF recEvent.what = mouseDown THEN
blnDone := TRUE;
RETURN TRUE
ELSE
RETURN FALSE
END
END TrackMouse;
PROCEDURE DrawStar(wndArg :Window);
VAR
intLoop :INTEGER;
intDig :INTEGER;
BEGIN
SetPen(wndArg,10,50);
TurnTo(wndArg,0);
intDig := 0;
FOR intLoop := 0 TO 4 DO
TurnTo(wndArg,intDig);
Move(wndArg,80);
intDig := intDig + 216;
IF intDig > 360 THEN
intDig := intDig - 360
END
END
END DrawStar;
BEGIN
OpenGraphicWindow(wndStar,50,50,100,100,"DrawStar",DrawStar);
tskMouse := PushTask(TrackMouse);
REPEAT
PollEventTasks
UNTIL blnDone;
PopTask(tskMouse);
CloseGraphicWindow(wndStar)
END DrawStar.
FROM
GraphicWindows
IMPORT
Window,
OpenGraphicWindow,
CloseGraphicWindow,
SetPen,
TurnTo,
Move;
TYPE
Window
RestoreProc
Mode
PROCEDURE
OpenGraphicWindow
RedefGraphicWindow
Clear
CloseGraphicWindow
SetMode
Dot
SetPen
TurnTo
Turn
Move
MoveTo
Circle
Area
CopyArea
Write
WriteString
IdentifyPos
PROCEDURE DrawStar(wndArg :Window);
VAR
intLoop :INTEGER;
intDig :INTEGER;
BEGIN
SetPen(wndArg,10,50);
TurnTo(wndArg,0);
intDig := 0;
FOR intLoop := 0 TO 4 DO
TurnTo(wndArg,intDig);
Move(wndArg,80);
intDig := intDig + 216;
IF intDig > 360 THEN
intDig := intDig - 360
END
END
END DrawStar;
BEGIN
OpenGraphicWindow(wndStar,50,50,100,100,"DrawStar",DrawStar);
tskMouse := PushTask(TrackMouse);
REPEAT
PollEventTasks
UNTIL blnDone;
PopTask(tskMouse);
CloseGraphicWindow(wndStar)
END DrawStar.