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

visual
    ビジュアル型を指定する。 ビジュアルに を指定した場合は親と同じビジュアル型になる。

width

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

x

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

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

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

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

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

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

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

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

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

#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;
    unsigned long background_pixel;
    Pixmap border_pixmap;
    unsigned long border_pixel;
    int bit_gravity;
    int win_gravity;
    int backing_store;
    unsigned long backing_planes;
    unsigned long backing_pixel;
    Bool save_under;
    long event_mask;
    long do_not_propagate_mask;
    Bool override_redirect;
    Colormap colormap;
    Cursor cursor; } 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