//============================================================== // imagemap.cc // Imagemapに応対するCGIプログラム // Copyright (C) Naoki Watanabe. 1995-1999. All rights reserved. //============================================================== #include #include //---- 文字列の座標情報を2つの整数値に変換する関数 void Get_Coordinates( char* point, int& X, int& Y ) { if( sscanf( point, "%d,%d", &X, &Y ) != 2 ){ printf("Content-type: text/html\n\n"); printf("

ERROR!!!!

\n"); printf("

Broken coordinate infomation [%s].

\n", point ); exit(1); } } //---- 試しに座標を表示してみる関数 // ただしこの関数を呼び出したら次のページへの移動はできません。 void Print_Coordinates( int X, int Y ) { printf("Content-type: text/html\n\n"); printf("

You clicked at (%d,%d)

\n",X,Y); exit(0); } //---- 指定のURLのページへ移動させる関数 // URLは必ず絶対URLで指定して下さい。 // この関数を呼び出したらこのプログラムは終りです。 void Proceed_Page( char* URL ) { printf("Location: %s\n\n", URL ); exit(0); } //---- 試食用main関数 int main( int argc, char* argv[] ) { int X,Y; if( argc == 2 && argv[1] != NULL ){ Get_Coordinates( argv[1], X, Y ); }else{ X=Y=0; } // 例に挙げたImagemapの絵のどの領域でクリックされたかを調べて、 // 指定のページへ移動させる。 if( 0 <= Y && Y < 64 ){ Proceed_Page( "http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/whatscgi.html"); } if( 64 <= Y && Y < 128 ){ Proceed_Page( "http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/showtime.html"); } if( 128 <= Y && Y < 192 ){ Proceed_Page( "http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/download.html"); } if( 192 <= Y && Y < 256 ){ Proceed_Page( "http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/csimgmap.html"); } return(0); }