今回紹介するプログラムは,所謂HelloWorldで,画面にHelloWorldと表示するだけの極々簡単なプログラムです。今回は,実際にHelloWorldプログラムを見ながら,プログラムの大枠を紹介して,次回以降にそれらの詳しい説明を進めて行くことにします。
ソース
解説に先立ち,サンプルコード全体を以下に示します。HelloWorld.mod
MODULE HelloWorld;
FROM
GraphicWindows
IMPORT
Window,
OpenGraphicWindow,
CloseGraphicWindow,
SetPen,
WriteString;
FROM
EventBase
IMPORT
mouseDown,
Point,
EventRecord,
PushTask,
PopTask,
PollEventTasks;
VAR
wndHello :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 WriteHello(wndArg :Window);
BEGIN
SetPen(wndArg,10,10);
WriteString(wndArg,"hello,world!")
END WriteHello;
BEGIN
OpenGraphicWindow(wndHello,50,50,100,50,"hello,world!",WriteHello);
tskMouse := PushTask(TrackMouse);
REPEAT
PollEventTasks
UNTIL blnDone;
PopTask(tskMouse);
CloseGraphicWindow(wndHello)
END HelloWorld.
解説
MODULE HelloWorld;
FROM
GraphicWindows
IMPORT
Window,
OpenGraphicWindow,
CloseGraphicWindow,
SetPen,
WriteString;
FROM
EventBase
IMPORT
mouseDown,
Point,
EventRecord,
PushTask,
PopTask,
PollEventTasks;
VAR
wndHello :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 WriteHello(wndArg :Window);
BEGIN
SetPen(wndArg,10,10);
WriteString(wndArg,"hello,world!")
END WriteHello;
BEGIN
OpenGraphicWindow(wndHello,50,50,100,50,"hello,world!",WriteHello);
tskMouse := PushTask(TrackMouse);
REPEAT
PollEventTasks
UNTIL blnDone;
PopTask(tskMouse);
CloseGraphicWindow(wndHello)
END HelloWorld.
BEGINは,モジュールのメイン部分が始まることを示し,対して対になるENDはメイン部分の終了を示すとともに,モジュール自体がここで終わることをも示します。
この部分では,Windowを作成し,マウスイベント処理を組込み,イベントを待ち,最後にイベント処理及び作成されたWindowを削除する,という一連の処理を行っています。(詳しくは次回以降に説明します。)
お試し
さて,プログラムを入力して,コンパイル・リンクしてみましょう。どうでしょうか?以下のキャプチャの様に,うまいことHelloWorldプログラムが実行されてましたでしょうか?(クリックすると終了します。)![](./image/hello_world.gif)