様々な条件に応じた動作をさせられるように、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-----------------------