Next: 3.4 C 曲線の表示
Up: 3 例題:Xwindow操作機能の追加
Previous: 3.2 引数をとる関数の定義
リストデータを結果として返す関数の例として,
Xwindowのマウスの状態を調べる関数の定義をすると
すれば,以下のような形に書くことができる.
LVAL xmouse()
{
LVAL arg1,arg2,val;
int flg=0,x=0,y=0;
XEvent event;
if (xlargc==2) {
arg1= xlgetarg(); arg2 = xlgetarg();
x = (int)getnumint(arg1);
y = (int)getnumint(arg2);
}
xllastarg();
while (XCheckMaskEvent( display,
XButtonPressMask | XButtonMotionMask,
&event ));
xlsave1(val);
x = event.xmotion.x;
y = event.xmotion.y;
val = NIL;
val = cons(cvfixnum(y),val);
val = cons(cvfixnum(x),val);
if (event.type == ButtonPress) val = cons(true,val);
else val = cons(NIL,val);
xlpop();
return(val);
}
これは,
(flag num1 num2)
というような3つの要素をもつリストを返す.最初の要素はボタンが押さ
れているかどうかで,T ならば押されている.NILならば押されていない.を
示す.num1,num2はウィンドウの中でマウスカーソルが動いている時には,
そのマウスカーソルのx,yの座標値を示す.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日