Previous: ウィンドウの階層構造の設計
Up: ウィンドウの階層構造の設計
Next: イベントループの中でのウィンドウの判定
Previous Page: ウィンドウの階層構造の設計
Next Page: イベントループの中でのウィンドウの判定
プログラムが大きくなるにつれ、使用されるウィンドウの数が増え、
その構造も複雑になってきます。
今日のプログラムで使用されるウィンドウを例に取り、
「ウィンドウの設計」について考えてみましょう。
次のようなウィンドウの階層構造を絵にすると
どうなるでしょうか?
Window frame, canvas, tool, quit;frame = XCreateSimpleWindow( dsp, DefaultRootWindow(dsp), 0, 0, 640, 300, 1, BlackPixel(dsp,0), BlackPixel(dsp,0) ); canvas = XCreateSimpleWindow( dsp, frame, 5, 5, 590, 290, 0, BlackPixel(dsp,0), WhitePixel(dsp,0) ); tool = XCreateSimpleWindow( dsp, frame, 600, 5, 40, 290, 0, BlackPixel(dsp,0), WhitePixel(dsp,0) ); quit = XCreateSimpleWindow( dsp, tool, 5, 5, 30, 30, 1, BlackPixel(dsp,0), WhitePixel(dsp,0) );
子供のウィンドウを一斉に表示するには、XMapSubwindows()を使います。
この関数の引数は、表示されるウィンドウではなく親のウィンドウです。
上のように孫に当たるウィンドウ(quit など)を
一斉に表示させたい時には、その親を指定します。
XMapWindow( frame ); /* ウィンドウ frame の表示 */ XMapSubwindows( frame ); /* ウィンドウ frame の子ウィンドウの表示 */ XMapSubwindows( tool ); /* ウィンドウ tool の子ウィンドウの表示 */