Previous: 準備
Up: Xウィンドウ実習
第3回 多数のウィンドウを使う
Next: 配列の利用
Previous Page: 準備
Next Page: 配列の利用
前回は色を指定するのに rgb の三原色のデータを与えました。
この方法の他に色の名前を使って指定することもできます。
関数は XAllocColor() の代わりに XAllocNamedColor() を使用します。
red, blue など単純な色を確保するのには
こちらの方法の方が便利でしょう。
3つの色をカラーマップから取り出し、それぞれの色を背景色に設定した
ボタン状のウィンドウを生成してみましょう。
親のウィンドウを win ボタンのウィンドウを sub1, sub2, sub3 と名付けます。
プログラムを完成させてください。ソース・ファイル名は win8.c とします。
win8.c
#include<stdio.h> #include<X11/Xlib.h> main() { Display *dsp; /* ディスプレイ構造体の宣言 */ Window win, sub1, sub2, sub3; /* ウィンドウ構造体の宣言 */ Colormap cmap; /* カラーマップ構造体の宣言 */ XColor iro1, iro2, iro3, dummy; /* カラー構造体の宣言 */dsp = XOpenDisplay( NULL ); /* ディスプレイのオープン */
cmap = DefaultColormap( dsp, 0 ); /* カラーマップを得る */
/* カラーマップから色を得る */ XAllocNamedColor( dsp, cmap, "red", &iro1, &dummy ); XAllocNamedColor( dsp, cmap, "green", &iro2, &dummy ); XAllocNamedColor( dsp, cmap, "blue", &iro3, &dummy );
/* ウィンドウの生成 */ win = XCreateSimpleWindow( dsp, DefaultRootWindow(dsp), 0, 0, 600, 50, 1, BlackPixel(dsp,0), WhitePixel(dsp,0) ); sub1 = XCreateSimpleWindow( dsp, win, 3, 3, 40, 40, 2, BlackPixel(dsp,0), iro1.pixel ); sub2 = XCreateSimpleWindow( dsp, win, 53, 3, 40, 40, 2, BlackPixel(dsp,0), iro2.pixel ); sub3 = XCreateSimpleWindow( dsp, win, 103, 3, 40, 40, 2, BlackPixel(dsp,0), iro3.pixel );
XStoreName( dsp, win, "カラーボタン" ); /* タイトルの設定 */
XMapWindow( dsp, win ); /* ウィンドウの表示 */ XMapSubwindows( dsp, win ); /* サブウィンドウの表示 */ XFlush( dsp );
getchar(); /* リターンキーの入力まで停止する */ XCloseDisplay( dsp ); /* ディスプレイのクローズ */ }
プログラムができたら、コンパイルして実行してみましょう。
3個の色付きのボタンが現われればOKです。
(だだし、ボタンと言ってもまだ何の働きもありません。)
コンパイルの命令には ccx を使ってください。