様々な条件に応じた動作をさせられるように、Cにも いろいろな制御文が用意されています。 次のプログラムは、ウィンドウ上でマウスボタンを押すと、そこへ ボタンに応じた図形が描かれるプログラムです。
-----------------------
1: /* program "test5.c" --- マウスボタンが押された位置に図形を描く */
2:
3: #include <stdio.h>
4: #include <Xtc.h>
5:
6: void main(void)
7: {
8: int button;
9: int x, y, r = 4;
10:
11: initgraph(); /* グラフィック環境の初期化 */
12:
13: while(1){
14:
15: button = xgetbutton(); /* マウスボタンが押されるまで待つ */
16: x = cur_pointer_x; /* ボタンが押された時のx座標 */
17: y = cur_pointer_y; /* y座標 */
18:
19: if( button == 3 ) /* 押されたボタンが3番ならば、 */
20: break; /* while ループを抜ける(終了) */
21:
22: switch( button ){
23: case 1: /* ボタン1ならばそこに矩形を描く */
24: rectangle( x - r, y - r, x + r, y + r );
25: break;
26: case 2: /* ボタン2ならばそこに円を描く */
27: circle( x, y, r );
28: break;
29: }
30:
31: }
32:
33: closegraph(); /* ウィンドウを閉じる(終了) */
34: }
-----------------------
この中で、cur_pointer_x および cur_pointer_y という変数は、 マウスボタンが押された時のマウスカーソルの位置がセットされているもので、 グラフィックライブラリをリンクすれば使用できます。
このプログラムのコンパイルは、前節と同様に行います。
-----------------------gcc -o test5 test5.c -I/usr/X11/include -L/usr/X11/lib \ -R/usr/X11/lib -lXtc -lX11 -lsocket -lnsl-----------------------