Previous: ウィンドウの生成と階層構造
Up: ウィンドウの生成と階層構造
Next: ルートの直接の子供は特別
Previous Page: ウィンドウの生成と階層構造
Next Page: ルートの直接の子供は特別

ウィンドウの親と位置の指定

ウィンドウを作るには関数 XCreateSimpleWindow() を用いました。 例を見てみましょう。

Display *dsp;              /* ディスプレイ構造体の宣言 */
 Window   win, sub;         /* ウィンドウ構造体の宣言 */
 /* ウィンドウの生成 */
 win = XCreateSimpleWindow( dsp, DefaultRootWindow(dsp),
                            0, 0, 200, 50, 1,
                            BlackPixel(dsp,0), WhitePixel(dsp,0) );
 sub = XCreateSimpleWindow( dsp, win,
                            3, 3, 40, 40, 2,
                            BlackPixel(dsp,0), WhitePixel(dsp,0) );

今日の授業のポイントは、 ウィンドウの基本は親子関係(階層構造)です。 どのウィンドウも必ず親のウィンドウを1つ持ちます。 (引数の2番目に与えられる)
上の例では、 アプリケーション全体を表すウィンドウ win の親は ルート・ウィンドウ(画面全体)です。 ウィンドウ sub の親は win です。 逆に win から見ると sub は子供のウィンドウということになります。 子供のウィンドウのことを「サブウィンドウ」と呼ぶこともあります。
サブウィンドウは、親ウィンドウの内部にしか存在できません。 またサブウィンドウの位置は、 すべて親ウィンドウの左上の隅を基準に測った位置です。 (引数の3番目が横方向の位置、4番目が縦方向の位置でした。)
生成されたウィンドウの位置は、プログラムの途中で変更することもできます。 そのための関数が XMapWindow() です。
int     x, y;

XMoveWindow( dsp, win, x, y );


上の例で指定している位置 x, y は、 もちろん親ウィンドウの左上隅の点を基準にします。

maruyama@wakhok.ac.jp
1995年02月01日 (水) 00時21分18秒 JST