ウインドウシステム概要 version 2.23 Copyright T.Kobayashi 1991.5.3 1.概要  ウインドウを表示中のディスプレイ画面の一例を示します。 ビューポート ウインドウ │ │ ┌─┴─┐ ┌──┴──┐ ┏━━┿━━━┿━━━━┿━━━━━┿━━━━━━━┓ ━━ ┃ │ │ │ │ ┃ ↑ ┃ │ │ ↓ │ ┃ │ ┃ │ ┏━┿━━━━━━━┓ ↓ ┃ │ ┃ │ ┃ ↓ ┣━━━━━┓ ┃ │ ┃ │ ┃┌───────┐┠────┐┃ ┃ │ ┃ │ ┃│ │┃ │┃ ┃ │ ┃ │ ┃│ │┣┓ │┃ ┃ │ ルートウインドウ ┃ │ ┃└───────┘┃┠───┘┃ ┃ │ ┃ │ ┗━━┳━┯━━━┯┛┣━━━━┛ ┃ │ ┃ └────╂→│ │ ┃ ┃ │ ┃ ┃ └───┘ ┃ ┃ │ ┃ ┗━━━━━━━┛ ┃ │ ┃ ┃ ↓ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛ ━━ 図1 ディスプレイ画面  基本的にディスプレイ画面全体がルートウインドウになり、すべてのウインドウは ルートウインドウの内部に表示され、ルートウインドウの子ウインドウ、またはその 子ウインドウになります。  各ウインドウはビューポートが設定されています。基本的にビューポート内のみ文 字、パターン、線分などを表示することができます。ウインドウ自体の大きさに対す るビューポートの大きさはウインドウの種類ごとにあらかじめ設定されています。  ウインドウは階層的に管理されており、ルートウインドウを除いたすべてのウイン ドウは親ウインドウを持っています。また、必要に応じて子ウインドウを持つことが できます。子ウインドウは親ウインドウに優先して表示されます。例えば図2のよう な階層構造を持ったウインドウは図3のように表示されます。 Window1 ┏━━━┻━━━┓ Window2 Window3 ┃ Window4 図2 ウインドウの階層構造 ┏━━━━━━━━━━━━━━━━━━━━┓ ┃Window1 ┃ ┃ ┃ ┃ ┏━━━━━━━━━┓ ┃ ┃ ┃Window3 ┃ ┃ ┃ ┏━━━━━━┻━━━━┓ ┃ ┃ ┃ ┃Window2 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┏━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃Window4 ┃ ┣━━━━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━━━━┛ ┃ ┃ ┃ ┗━━━━━━━━━━━┛ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━┛ 図3 階層構造を持ったウインドウの表示例 2.ウインドウサーバ  ウインドウの生成、表示やマウスの移動、キー入力などはすべてウインドウサーバ が処理します。各アプリケーションプログラムはウインドウサーバに対してファンク ションコールすることで上記のようなウインドウを扱うことができます。これらの処 理のためのライブラリは WLIB.A にあります。  コマンドラインから WSRV.X を実行するとウインドウサーバが起動します。コマン ドラインの引数で起動時に実行するアプリケーションプログラムを指定できます。ウ インドウサーバを利用するアプリケーションプログラムがなくなると画面をクリアし コマンドラインに戻ります。起動時にアプリケーションがない時もすぐに終了します ので注意してください。  ウインドウサーバは起動時に設定ファイル WSRV.RC とリソースファイル WSRV.RS を読み込みます。このファイルはカレントディレクトリ、環境変数 home、環境変数 path に従って順に検索されます。WSRV.RC はなくてもデフォルトの値で起動します が、WSRV.RS がないと起動できません。WSRV.RC には、ウインドウサーバ自体の設定 の他に各アプリケーションプログラムの設定も記述します。  WSRV.RC の例 !Wsrv ウインドウサーバの設定を示す WindowLines 32 ルートウインドウが使用する行数 WindowColumns 96 ルートウインドウが使用する桁数 CommonSize 100 共有領域の大きさ PaperColor 20 20 20 カラーコード1の色(RGB) HightLightColor 31 31 31 カラーコード3の色(RGB) ExecCommand popup サーバ起動時に実行するコマンド (複数指定可能) !PopUp POPUP.WIN の設定を示す ...  WSRV.RS の書式は RESOURCE.DOC を参照してください。 3.アプリケーション  アプリケーションプログラムはイベント駆動型で記述されなければなりません。1 つのウインドウを作成するたびにそのウインドウに対するイベント処理関数を指定し ます。イベント処理関数はイベントが発生した時にウインドウサーバから呼び出され ます。イベントはウインドウの内部でマウスがクリックされたり、キー入力があった 場合や、ウインドウが移動したりして、描き直す必要が生じた場合に発生します。イ ベント処理関数にはウインドウのIDとイベント情報(イベントの種類、マウスの位 置、キーコードなど)が渡されます。複数のウインドウの処理を1つのイベント処理 関数で行うこともできます。そのためにウインドウごとにクライアントデータを持た せることができます。  また、よく使いそうな部品や基本的なウインドウの操作をまとめたライブラリを用 意してあります。PARTS.DOC WINOP.DOC に関数の仕様があるので参照してください。 ただ、これは特に使用する必要はありません。  アプリケーションを作成する時は、ライブラリ関数の仕様書( FUNC.DOC )、サンプ ルプログラム( SAMP.DOC )、プログラマーズマニュアル( PROG.DOC )を読んで下さい。 また、HELLO.WIN, X.WIN, ACLOCK.WIN などのソースが参考になるでしょう。 4.グラフィック  グラフィック画面は 768x512 ドットモードで16色、256色、65536 色に対応してい ます。 256色、65536色モードではグラフィック画面は 512x512 ドットしかないので、 画面の右3分の1は使えません。 16色モードでは 1024x1024 ドットです。  グラフィック画面を使用するアプリケーションプログラムは、異なったモードを使 用するものが存在する可能性があることを考慮して作成しなければなりません。実際 にはウインドウがアクティブになる時に画面モードを自分のモードにします。他のア プリケーションが画面モードを変更した時はその旨がすべてのアプリケーションに通 知されるのでそれに応じた処理をします。プログラマーズマニュアル( PROG.DOC )及 びサンプルプログラム( GRAPH.WIN )を参照してください。 5.ドキュメント  他のドキュメントファイルの内容は次のようになっています。 FUNC.DOC :関数の仕様 EVENT.DOC :イベント処理関数の書式 SAMP.DOC :サンプルプログラム PROG.DOC :プログラマーズマニュアル RESOURCE.DOC :リソースファイルの設定 PARTS.DOC :部品ライブラリの仕様 WINOP.DOC :ウインドウ操作ライブラリの仕様 APPLI.DOC :アプリケーションプログラムの使用説明 KE.DOC :付属のエディタの使用説明