XCreateWindow(3X11)

名前
XCreateWindow, XCreateSimpleWindow, XSetWindowAttributes - ウィンドウの生成、ウィンドウ属性構造体

書式
Window XCreateWindow(display, parent, x, y, width, height, border_width, depth,
                       class, visual, valuemask, attributes)
      Display *display;
      Window parent;
      int x, y;
      unsigned int width, height;
      unsigned int border_width;
      int depth;
      unsigned int class;
      Visual *visual
      unsigned long valuemask;
      XSetWindowAttributes *attributes;

Window XCreateSimpleWindow(display, parent, x, y, width, height, border_width,
                        border, background)
      Display *display;
      Window parent;
      int x, y;
      unsigned int width, height;
      unsigned int border_width;
      unsigned long border;
      unsigned long background;

引き数

attributes
    値を取り出す構造体(マスク値として指定)を指定。 構造体でどの属性がセットされているかを示すため、マスク値には適切なビット がセットされていなければならない。

background
    ウィンドウの背景のピクセル値を指定。

border
    ウィンドウの境界のピクセル値を指定。

border_width
    生成されるウィンドウの境界の幅をピクセル単位で指定。

class
    生成されるウィンドウのクラスを指定。 これには のいずれかを指定する。 クラスの時は、親と同じクラスになる。

depth
    ウィンドウの深さを指定。 深さを とした場合、深さは親と同じになる。

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

parent
    親ウィンドウを指定。

valuemask
    引き数 attributes で定義されるウィンドウ属性を指定。 このマスクは、複数の有効な属性マスクに対して、ビットごとの論理和を取っ たものである。 マスク値がゼロならば引き数 attributes は無視され、参照されない。

visual
    ビジュアルのタイプを指定。 ビジュアルに を指定した場合は親と同じビジュアルのタイプになる。

width

height
    高さと幅を指定。 これは生成されるウィンドウの内側のディメンジョンであり、境界は含まない。

x

y   x, y 座標を指定。これはウィンドウの境界の左上外側の隅であり、親ウィン ドウの境界の内側からの相対座標で与えられる。

説明
関数 は指定した親ウィンドウに対して、マップされていなサブウィンドウを生成し、 生成したウィンドウのウィンドウIDを返す。また、X サーバに イベントを生成させる。 生成されたウィンドウは兄弟ウィンドウに対してスタックの一番上に配置され る。

座標系はX軸が水平方向、Y軸が垂直方向であり、左上隅が原点[0, 0]である。 座標は整数で、ピクセルが基準であり、ピクセルの中心と一致する。 各ウィンドウとピックスマップは自分自身の座標系を持つ。 ウィンドウについては、原点は左上隅の境界の内側である。

のウィンドウの場合は border_width はゼロでなければならない。 そうでない場合、エラー となる。 クラスの場合、スクリーンに対してビジュアルのタイプと深さの組み合わせが サポートされていなければならない。そうでない場合には、エラー となる。 深さは親ウィンドウと同じである必要は無いが、親ウィンドウのクラスは であってはならない。そうでない場合、エラー となる。 のウィンドウは深さがゼロでなければならず、スクリーンがサポートしている ビジュアルでなければならいない。 いずれかの条件が満たされない場合、エラー となる。 しかし、親ウィンドウは任意の深さとクラスを持つことが考えられる。 ウィンドウに対して不正なウィンドウ属性を指定した場合、エラー となる。

生成されたウィンドウは、その時点ではディスプレイに表示(マップ)されない。 ウィンドウを表示するには、 を呼び出す。 新しいウィンドウは初期状態では親ウィンドウと同じカーソルを使用する。 新しいウィンドウに新しいカーソルを定義する時は、 を使う。 生成されたウィンドウは全ての祖先ウィンドウがマップされ、自身が祖先ウィ ンドウの陰に隠されないようになるまではスクリーンに表示されない。

はエラー を起こすことがある。

関数 は指定した親ウィンドウに対して、マップされていない のサブウィンドウを作り、そのウィンドウIDを返す。また、X サーバに イベントを生成させる。 生成されたウィンドウは兄弟ウィンドウに対してスタックの最も上に配置され る。 親ウィンドウの外にはみ出る部分は全てクリップされる。 のウィンドウの border_width はゼロでなければならない。そうでない場合に は、エラー となる。 は親ウィンドウより深さ、クラス、ビジュアルを継承する。 これ以外のウィンドウ属性は、背景色を除いて全てデフォルト値になる。

はエラー を起こすことがある。

構造体
構造体の内容を示す。

/* ウィンドウ属性値のマスクビット */
#define |  | (1L<<0)
#define |  | (1L<<1)
#define |  | (1L<<2)
#define |  | (1L<<3)
#define |  | (1L<<4)
#define |  | (1L<<5)
#define |  | (1L<<6)
#define |  | (1L<<7)
#define |  | (1L<<8)
#define |  | (1L<<9)
#define |  | (1L<<10)
#define |  | (1L<<11)
#define |  | (1L<<12)
#define |  | (1L<<13)
#define |  | (1L<<14)
/* 値 */ typedef struct {
     Pixmap background_pixmap;    /* 背景、None,  ParentRelative のいずれか */
     unsigned long background_pixel;    /* 背景のピクセル */
     Pixmap border_pixmap;    /* ウィンドウの境界か CopyFromParent */
     unsigned long border_pixel;    /* 境界のピクセル値 */
     int bit_gravity;    /* bit gravity 値の1つ */
     int win_gravity;    /* window gravity 値の1つ */
     int backing_store;    /* NotUseful, WhenMapped, Always */
     unsigned long backing_planes;    /* 可能ならば保存されるプレーン */
     unsigned long backing_pixel;    /* プレーンの格納に使う値 */
     Bool save_under;    /* ビットを保存すべきか? (ポップアップ) */
     long event_mask;    /* 保存されるべきイベントの組 */
     long do_not_propagate_mask;    /* 伝播させないイベントの組 */
     Bool override_redirect;    /* override_redirect を示す真偽値 */
     Colormap colormap;    /* ウィンドウに対応するカラーマップ */
     Cursor cursor;    /* 表示されるカーソル(あるいは None) */
} XSetWindowAttributes;

この構造体のメンバの詳しい説明については Xlib - C Language X Interface を参照すること。

返り値

サーバが、要求されたリソースやサーバメモリの割り当てに失敗した。

引き数 Colormap の値が、定義されている Colormap を指していない。

引き数 Cursor の値が、定義されている Cursor を指していない。

のウィンドウに対する値が存在しない。

引き数や引き数の組は正しい型・範囲を持っているが、そのリクエストが要求する
    他の条件に適合できなかった。

引き数 Pixmap の値が、定義されている Pixmap を指していない。

指定された数値に、リクエストの許容範囲を越えているものがある。引き数に対
    して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範 囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが ある。

引き数 Window の値が、定義されている Window を指していない。

関連項目
XChangeWindowAttributes(3X11), XConfigureWindow(3X11), XDefineCursor(3X11), XDestroyWindow(3X11), XMapWindow(3X11), XRaiseWindow(3X11), XUnmapWindow(3X11)
Xlib - C Language X Interface