Solaris X Window System 開発ガイド

透明オーバーレイウィンドウの作成

XSolarisOvlCreateWindow を使用すると、透明オーバーレイウィンドウを作成できます。このルーチンは、XCreateWindow と同様に動作しますが、生成されるのは透明オーバーレイウィンドウです。新しく作成されたウィンドウを不透明ペイントと透明ペイントで描画でき、オーバーレイウィンドウの背景は透明になります。

XSolarisOvlCreateWindowclass 引数は、InputOutput にする必要があります。オーバーレイウィンドウは InputOnly ウィンドウとして作成できますが、その場合は標準 InputOnly ウィンドウと同様に動作します。オーバーレイと非オーバーレイに違いがあるのは、InputOutput ウィンドウだけです。

XSolarisOvlCreateWindow の構文と引数を次に示します。

Window

XSolarisOvlCreateWindow(Display *display, Window parent, int x, int y,

  unsigned int width, unsigned int height, unsigned int border_width, int

depth, unsigned int class, 		Visual * visual, unsigned long valuemask,    

XSetWindowAttributes * attr)

このルーチンの引数は、XCreateWindow と同じです。

表 6–3

display

X サーバーへの接続を指定する。 

parent

親ウィンドウを指定する。 

x, y

ウィンドウの左上隅のピクセルの座標を親ウィンドウに対する相対座標で指定する。 

width, height

ウィンドウの幅と高さをピクセル単位で指定する。 

border_width

ウィンドウの境界の幅をピクセル単位で指定する。 

depth

ウィンドウのデプスを指定する。 

class

ウィンドウのクラスを指定する。クラスが InputOutput でない場合、ウィンドウはオーバーレイウィンドウにはならない。

visual

ウィンドウのビジュアル構造体へのポインタを指定する。 

valuemask

attr 引数でどのウィンドウ属性を定義するかを指定する。

attr

ウィンドウ属性を指定する。 

任意のビジュアルを使用してオーバーレイを作成できます。ただし、どのオーバーレイ / アンダーレイのペアでも最適であるとは限りません。画面ごとに、最適のオーバーレイ / アンダーレイビジュアルのペアのセットを定義します。これらは、特定のアンダーレイビジュアルを使用して作成できるオーバーレイウィンドウの最適のビジュアルを定義します。また、特定のオーバーレイビジュアルを使用して作成できるアンダーレイウィンドウの最適のビジュアルも定義します。XSolarisOvlSelectPairXSolarisOvlSelectPartner を使用すると、最適のペアを設定できます。

「最適」の定義はデバイスごとに異なりますが、通常はデバイスでアンダーレイウィンドウとは異なるプレーングループ内にオーバーレイウィンドウを作成できるかどうかを指します。オーバーレイ / アンダーレイビジュアルのペアについての詳細は、オーバーレイ/アンダーレイビジュアルの最適なペアの選択を参照してください。

オーバーレイウィンドウは、Xlib ルーチンである XDestroywindow または XDestroySubwindows によって削除されます。