XSolarisOvlCreateWindow を使用すると、透明オーバーレイウィンドウを作成できます。このルーチンは、XCreateWindow と同様に動作しますが、生成されるのは透明オーバーレイウィンドウです。新しく作成されたウィンドウを不透明ペイントと透明ペイントで描画でき、オーバーレイウィンドウの背景は透明になります。
XSolarisOvlCreateWindow の class 引数は、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 |
ウィンドウ属性を指定する。 |
任意のビジュアルを使用してオーバーレイを作成できます。ただし、どのオーバーレイ / アンダーレイのペアでも最適であるとは限りません。画面ごとに、最適のオーバーレイ / アンダーレイビジュアルのペアのセットを定義します。これらは、特定のアンダーレイビジュアルを使用して作成できるオーバーレイウィンドウの最適のビジュアルを定義します。また、特定のオーバーレイビジュアルを使用して作成できるアンダーレイウィンドウの最適のビジュアルも定義します。XSolarisOvlSelectPair と XSolarisOvlSelectPartner を使用すると、最適のペアを設定できます。
「最適」の定義はデバイスごとに異なりますが、通常はデバイスでアンダーレイウィンドウとは異なるプレーングループ内にオーバーレイウィンドウを作成できるかどうかを指します。オーバーレイ / アンダーレイビジュアルのペアについての詳細は、オーバーレイ/アンダーレイビジュアルの最適なペアの選択を参照してください。
オーバーレイウィンドウは、Xlib ルーチンである XDestroywindow または XDestroySubwindows によって削除されます。