XViewでのウィンドは、図13−1のような形に表示されます。これは、XView(OpenWindows)の 標準ツールの1つです。ネットワークで繋がっているコンピュータの状態をモニターするもので、 このウィンドで何をモニターするかを指定します。指定後、適用ボタンをクリックすると、その内 容がグラフで表示され続けます。
今回紹介のソフトの画面コピーをと思ったのですが、特殊なハードウェアがないと動作しないた め、掲載した関数での表示はご容赦ください。図13−1は、XViewで作ったウィンドのイメージ を持っていただくためのものです。
プログラミングに疲れたら、図13−2のゲームもいいでしょう。
リスト13−1の102行から始まる関数rgb_info_initは、その名のとおり色情報を表示するウィ ンド(XViewではFRAMEという)を生成し、その中に色々な部品を並べます。ソフトにもよりますが、 ウィンドウの中に50個以上の部品を配置することもあります。このソフト、1つ1つのウィンドウ はそれほど複雑ではないのですが(でもプログラムは難解)、50種類ものウィンドウを操りながら 操作するんです。
strlenは文字列長を求める関数なので、当然その引数は文字列ということになります。strlenの 引数は大文字の名前になっていますが、これは全てマクロ名で、
#define SYS_TEXT_RGB_INFO "RGB情報"というふうに定義されています。これらの長さを調べては配置する位置を決めています。
最初の要素の座標値(x1,y)はマクロで指定しています。
2番目、3番目のx座標の位置は、
x2 = x1 + ........; x3 = x2 + ........;となっています。さらに、
x7 = x6 - ........; x8 = x7 - ........; x9 = x8 - ........; x10 = x9 - ........;というのも複雑化するのに役立っています。
とにかくゴチャゴチャしていて、私の理解どころか、想像の範囲を越えた別世界の人が書いたと しか思えないコーディングです。110行から151行までのびっしりと力を込めて書かれた部分は、理 解などできる部分ではないでしょう。各要素を配置する座標値を求めている(らしい)ことだけを 理解してください。それでも内容を知りたい人は、じっくり腰をすえて解読してください。
ここで求めた位置は、関数xv_createで生成したオブジェクトの位置を決める属性として引数に 入れています。x1は175行目で、
XV_X,x1として指定しています。211行目からのxv_createは、チェックボックスといって、複数の箱とチェッ クマークを表示できるもの(チェックボックス)を生成しています。
xv_create(rgb_info_panel1,PANEL_CHECK_BOX, PANEL_CHOICE_STRINGS, SYS_TEXT_PLANE0, SYS_TEXT_PLANE1, SYS_TEXT_PLANE2, SYS_TEXT_PLANE3, NULL, PANEL_CHOICE_XS, x3,x3+choice,x3+choice*2,x3+choice*3,NULL, PANEL_CHOICE_YS, y - SYS_PANEL_CHOICE,NULL, NULL);属性名PANEL_CHOICE_STRINGSは、各チェックボックスの隣に表示する文字列を指定します。何個 でも自由に設定でき、終りをNULLで指定します。
x座標値は、属性名PANEL_CHOICE_XSの後ろに同数個のx座標値を並べます。y座標についても同様 ですが、ここでは1つしか指定していません。省略された場合、同じ値が必要回数だけ繰り返され るので、y座標は同じになり、水平に並びます。
チェックボックスは、ふつうは複数個並べるので、1つの属性名(最後に S がついたもの)に 対しては複数の属性値を持ちます。この場合も、終りを示すために、属性値の最後にNULLを入れま す。