Previous: アイコンはウィンドウ・マネジャーが管理
Up: Xウィンドウ概論
第8回 アイコンとカーソル
Next: ピクスマップとビットマップ
Previous Page: アイコンはウィンドウ・マネジャーが管理
Next Page: ピクスマップとビットマップ
マウス・カーソルもウィンドウに近いオブジェクトですが、
その位置の移動や表示の切替えなどの
コントロールは直接サーバーによって行われます。構造体名は Cursorです。
Cursor cur;
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 );