Previous: アイコンはウィンドウ・マネジャーが管理
Up: Xウィンドウ概論
第8回 アイコンとカーソル

Next: ピクスマップとビットマップ
Previous Page: アイコンはウィンドウ・マネジャーが管理
Next Page: ピクスマップとビットマップ

カーソルはサーバーが管理

マウス・カーソルもウィンドウに近いオブジェクトですが、 その位置の移動や表示の切替えなどの コントロールは直接サーバーによって行われます。構造体名は Cursorです。

Cursor  cur;

カーソルの生成は関数 XCreatePixmapCursor() で行えます。 ただし、この関数は他のオブジェクトと引数の与え方が かなり違うので注意してください。

cur = XCreatePixmapCursor( dsp, bit1, bit2,
                                   color1, color2, hot_x, hot_y );

第2、3引数にはビットマップを指定します。 フルカラーのピクスマップではないので注意してください。 ビットマップが 2つ必要になるのは、 カーソルの輪郭の外側を「透明」にして下の表示が隠れないようにするためです。 2番目のビットマップは、カーソルの輪郭だけを与える図形です。 (シルエットのようなもの)
第4、5引数はカーソルの使うフォアグラウンドカラーとバックグラウンドカラーです。 ただし色の指定は、ピクセル値ではなく XColor構造体そのもの であることに注意してください。 カーソルは GC や Colormap の指定を必要としません。
第6、7引数で与えるのは「ホット・スポット」と呼ばれる点の位置です。
ホット・スポットはカーソルの差し示す点で、 たとえば矢印の先端や十字の中心などに設定するのが普通です。 「ホット・スポット」の位置は生の数値で与えることも可能ですが、 ビットマップ・エディターで図形を作る時に指定できますから、 その値をプログラムの中でも利用してください。
マウス・カーソルは、サーバーが支配するオブジェクトのため、 生成する時に親のウィンドウを指定したりはしません。 あるウィンドウの中でカーソルを使用するためには、 関数XDefineCursor() によってウィンドウとカーソルを結びつける必要があります。

XDefineCursor( dsp, win, cur );
カーソルを変更が必要になった時にも、XDefineCursor() を呼び出します。 ただしカーソルの色のみを変更するのならば、XRecolorCursor()が使えます。
XRecolorCursor( dsp, cur, color1,  color2 );

maruyama@wakhok.ac.jp
1995年02月01日 (水) 00時21分18秒 JST