










                           Visual Interface Library
                                   Ｖ Ｉ Ｌ
                                    V3.10
                            リファレンスマニュアル

                  ＳＴＵＤＩＯ　ＭＵ　　　風の谷のガンダルフ

                                   1994.8.20





§１ ＶＩＬ概要


  §１．１ ＶＩＬとは


      ＶＩＬ（Visual Interface Library）は，Ｆ−ＢＡＳＩＣ３８６のプログラム
    でマルチウィンドウ表示／マウス・パッド入力などのユーザ・インタフェースを
    実現するための，サブルーチン集です。

      最近のＴＯＷＮＳ用アプリケーションでは，こうしたインタフェースを用意す
    るものが多くなっています。Ｈｉｇｈ−Ｃではこうした機能がライブラリとして
    提供されるため，プログラマは作成中のプログラムから関数を呼び出すだけで済
    みます。しかし，Ｆ−ＢＡＳＩＣ３８６にはそんな便利なものは用意されていな
    いので，インタフェースのルーチンを自分で組む必要があります。

      ＶＩＬは，ＢＡＳＩＣ上でＣのライブラリに相当するものを実現しようとして
    作ったものです。もちろん，ＢＡＳＩＣのサブルーチンはＣの関数ほど独立性が
    高くなく， パラメータの渡し方が複雑になるなどの問題はあるのですが， Ｆ−
    ＢＡＳＩＣ３８６では

      ・ラベルがサポートされたため，サブルーチンを名前で呼び出すことができ，
        RENUM の影響を受けずにすむ。

      ・変数名が 40 字まで区別されるため，ＶＩＬ内の全変数名を "VIL_" で始め
        ることで，疑似的にローカル変数（と言えるほどのものではないが）を実現
        できる（少なくとも呼び出し側との変数名衝突回避が容易になる）。

      ・高速な 32 ビット機上で動作するため，パラメータ設定やサブルーチン呼び
        出し，長い変数名などのオーバヘッドがほとんど無視できる。

    などの理由から，充分実用になると思います。また，設計方針として，

      ・本ライブラリを使用して作成するアプリケーションとしては，非アクション
        系のゲーム，およびパターンエディタなどのツール類を想定。

      ・したがって速度より機能優先だが，快適なレスポンスは保証する

    というふうに考えています。高機能かつある程度の効率のよさを確保しようとし
    たため，本ライブラリのプログラミング上のインタフェースは，若干複雑なもの
    になっています。したがって，思うように使いこなすにはある程度の知識と慣れ
    が必要ですが，使い込めばＣで記述したものに劣らないアプリケーションを作成
    することができます。


  §１．２ 機能概要


      現バージョンでは以下の機能が実現されています。

      ・スタック型の疑似マルチウィンドウ
        複数のウィンドウをオーバラップして開くことができる。ただし，上下関係
        の入れ替えや，下になっているウィンドウへの描画はできない。

      ・マウス／パッド／キーボードによるメニュー選択入力


                                   - 1 -

        キーボード／パッド入力はキー割り当てのカスタマイズ可能。

      ・キーボードによる文字列入力機能
        INPUT 文を使わないためサイドワークや割り込みが有効。また，日本語入力
        も可能。ヒストリ機能も持つ。

      ・マルチグラフィックス表示機能
        複数の画像やパレットデータをオンメモリで管理し，必要に応じてパレット
        切り替えや画像表示が可能。

      ・ウィンドウマネージャ
        ウィンドウの枠・スイッチ描画，各ウィンドウの位置管理，ドット単位のオ
        ープン／クローズ／移動／サイズ変更などが可能。操作はマウス／パッド／
        キーボードに対応。

      ・確認，実行／取消などの選択

      ・水平・垂直方向のスクロールバー



§２ ＶＩＬ概念


    あなた（以下プログラマ）が，あるソフトを作るためＢＡＳＩＣでプログラムを
  作るとします。以下，このプログラムをアプリケーションと呼びます。

    アプリケーション中でＶＩＬが実現している機能が必要になった場合，プログラ
  マはアプリケーション中でその機能をプログラムする代わりに，定められた設定を
  行った後，ＶＩＬ内のサブルーチンに GOSUB をかけます。 サブルーチンはプログ
  ラマが必要とする処理を行った後，RETURN でアプリケーションに制御を戻します。

    具体的には，ＶＩＬを利用したアプリケーションは図のようになります。


      ＶＩＬ                       　　　              アプリケーション
        │                       　　 プログラム先頭にマージ │
        ├─ ローダファイル  ←───────────────┘
        │                   ────────────────┐
        │                        パッケージファイルをマージ │
        │                        汎用変数初期化             ↓
        └─ パッケージファイル                        アプリ変数等初期化
               │                                            │        
               ├─ パッケージ              呼出し           │
               │    │                  ←─────────┘
               │    ├初期化モジュール  ──────────┐
               │    ├機能モジュール    パッケージを初期化  ↓
               │    ├   :                            《メインルーチン開始》
               │    ├   :                 呼出し           │
               │    └機能モジュール    ←─────────┘
               │                        ──────────┐
               ├─ パッケージ           モジュール機能処理　↓
               ├─    :                                     :
               └─ パッケージ                               :

    ＶＩＬの実体は，ローダファイルとパッケージファイルからなっています。

    パッケージファイルは実現する機能（マルチウィンドウ，メニュー選択等）毎に


                                   - 2 -

  複数のパッケージに分かれ，各パッケージは１個の初期化モジュールと１個以上の
  機能モジュールから成っています。ここでいうモジュールとは要するにサブルーチ
  ンのことですが，先頭に

        *VIL_○○_××
            ○○    : パッケージ名
            ××    : モジュール名（初期化モジュールはINITM）

    の形のラベルが付けられています。モジュールの呼び出しは，引数として必要な
  変数値を設定した後，このラベルに対して GOSUB をかけることで行います。 した
  がって，行番号やモジュール内のプログラム構造を気にする必要はありません。ま
  た，プログラマが "VIL_" で始まるラベルを付けないようにすれば，ＶＩＬとラベ
  ル名が衝突する心配もありません。

    同様に，ＶＩＬ内で使用される変数（以下ＶＩＬ変数と呼びます）はプログラマ
  が使用する変数名との衝突を避けるため，

    ・汎用変数
        *VIL_××

    ・パッケージ変数
        *VIL_○○_××
             ○○    : パッケージ名

    の形をしています。

    ここで汎用変数とは，ＶＩＬ全体で引数の受渡しやワーク等に使用されるもので
  あり，パッケージ変数とは，そのパッケージ内のみで使用される変数です。

    またＶＩＬ変数には，プログラマの DEFINT/LNG/SNG/DBL/STR 宣言の影響を避け
  るため，すべて型宣言文字が付けられています。ただしほとんどは INT 型なので，
  プログラマが DEFINT V などと宣言すれば，ＶＩＬ変数値の設定・参照の際に "%"
  は省略できます。

    ローダファイルはパッケージファイルをアプリケーションにマージし，ＶＩＬ全
  体の初期化を行います。このファイルをアプリケーションの先頭にマージしておく
  ことにより，そのアプリケーションを走らせるだけで自動的にパッケージファイル
  が読み込まれ，その機能を利用できるようになります。

    実際に各パッケージの機能を利用するためには，それぞれ変数領域確保等の初期
  設定が必要です。これらの中には画面退避バッファの確保などメモリを大幅に消費
  するものもあるため，アプリケーションで使用しないパッケージの初期設定はメモ
  リの無駄になります。そのため，各パッケージ毎に独立して，初期設定用のサブル
  ーチンを用意するようになっています。このサブルーチンを初期化モジュールと呼
  びます。実際の手順としては，アプリケーションの初期化ルーチン内において，使
  用したいパッケージの初期化モジュールを順に呼び出します。

    アプリケーション中のメインルーチン内でパッケージの機能を利用するには，そ
  の機能が必要な箇所で対応する機能モジュールを呼び出します。



§３ ＶＩＬ使用法


  §３．１ インストール




                                   - 3 -

      今回提供するバージョンは，  以下のファイル構成になっています。  これら
    （VIL ディレクトリの下にまとめてあります）をすべて，ＨＤＤなどの適当なデ
    ィレクトリにコピーしてください

      ・ローダファイル
        VIL.BAS
        初期設定，およびパッケージのマージ処理ルーチン
        100〜9999 行

      ・パッケージファイル

          −VIL_BAS.BAS
            基本パッケージ（マルチウィンドウ，メニュー選択）
            10000〜14999 行

          −VIL_VWM.BAS
            ウィンドウマネージャ・パッケージ
            15000〜19999 行

      ・設定ファイル類

          −VIL.CNF
            ＶＩＬ設定ファイル

          −APPLI.CNF
            アプリ設定ファイル

          −APPLI.ORG
            初期アプリ環境ファイル

      ・アプリ側ルーチンのテンプレート

          −VIL_INIT.BAS
            ＶＩＬ初期化手順


  §３．２ アプリケーション作成手順


      まずＦ−ＢＡＳＩＣ３８６インタプリタを立ち上げます。ＶＩＬをインストー
    ルしたディレクトリをカレントにして，ローダ・プログラム VIL.BAS  を実行す
    ると，VIL_BAS.BAS，VIL_VWM.BAS がマージされて終了します。

      この段階で 20000 行以降が空いていますので， ここにアプリケーションを作
    成してください。

      最初に実行した段階でパッケージのマージルーチンは自動削除されるので，以
    後はプログラムを RUN してもマージし直すことはしませんし，RENUM  をかけて
    も構いません。普通にＢＡＳＩＣのプログラムを組むのと同様に，ルーチンを付
    け足しては気軽に走らせてみるようなプログラミングができます。

      ただしアプリケーション作成には以下の制限がつきます。

      ・アプリケーションの先頭（ローダファイルのルーチン以降で，機能モジュー
        ルを呼び出す前）で，使用するパッケージの初期化モジュールを呼び出して
        ください（各々のモジュールの呼び方は，５，６章参照）。

      ・ＶＩＬ変数が初期化されてしまうため，アプリケーション中で CLEAR  文は


                                   - 4 -

        使用できません。 必要ならば，ローダルーチンの先頭の CLEAR 文を書き換
        えてください。

      ・"VIL_" で始まる変数名は使用しないでください。

      ・"*VIL_" で始まるラベル名は使用しないでください。

      ・各機能モジュール呼出し時には，パラメータや画面モード等に制限がつく場
        合があります。具体的な制限事項については，５，６章を参照してください。

      ・実行時エラー対処のため，エラートラップが掛かっています。デバッグ中は
        必要に応じ無効化してください（３．３．６節参照）。

      アプリケーションが出来上がったら，いったんＶＩＬのルーチンを DELETE し，
    必要なら RENUM をかけて 20000 行以降に収めます。これに再び VIL.BAS  をマ
    ージして，プログラムが完成します。

      後は，

      ・このままセーブする。
        パッケージが含まれないのでプログラムサイズは小さくなるが，毎回パッケ
        ージファイルをマージするため，起動は多少遅くなる。また，パッケージフ
        ァイルをインストールしたディレクトリを指定するため，３．３節で述べる
        VIL.CNF ファイル中に，環境変数 VILDIR を設定しておく必要がある。

      ・一度走らせてパッケージをマージしてからセーブする。
        プログラムサイズは多少大きくなるが，起動は速くなる。

      ・一度走らせてパッケージをマージしてからセーブし，これをコンパイルする。
        プログラムサイズは一番大きくなるが，Ｆ−ＢＡＳＩＣ３８６インタプリタ
        なしで実行でき， 実行速度も速くなる。 ただし作成時に  （当然）  Ｆ−
        ＢＡＳＩＣ３８６コンパイラが必要。

    のうち好きな方法で使用してください。

  §３．３ ローダファイル説明


      ローダファイルの機能は，

     1. 汎用変数の宣言

     2. 設定ファイル "VIL.CNF" の読み込みと環境変数の設定

     3. パッケージファイルのマージ

     4. パッケージ用ユーザ定義関数の宣言

     5. ＶＩＬ汎用モジュールの提供

    です。３．２節の手順でアプリケーションの先頭にマージすれば自動的に実行さ
    れますが，以下プログラマに関係する部分について説明します。

    §３．３．１ 汎用変数

        汎用変数はＶＩＬ全体で引数の受渡しやワーク等に使用されるため，ここで
      まとめて宣言されます。



                                   - 5 -

    §３．３．２ 設定ファイル "VIL.CNF" と環境変数

        ＶＩＬのパッケージにはデータ等を外部ファイルとして持つものがあり，こ
      れらの中には，ＶＩＬを使用したアプリケーション間でファイルを共用できる
      ものもあります。そこで， こうしたファイルへのパスなどを設定ファイル  "
      VIL.CNF"  により，環境変数（ＭＳ−ＤＯＳでの環境変数と用途が似ているた
      めこう呼びますが，実体は単なるＢＡＳＩＣの変数です）に設定できるように
      してあります。

        ＶＩＬのローダファイルが実行されると，

       1. カレントディレクトリ

       2. カレントドライブのルートディレクトリ

      の順に "VIL.CNF" ファイルを捜します。 どちらにも見つからなければ環境変
      数の設定は行いません。

        したがって，

       1. ルートディレクトリに標準的な "VIL.CNF" を置いておく

       2. 標準と異なる設定をしたいアプリケーションのみ，同一ディレクトリ内に
          "VIL.CNF" を用意する

      ようにすればよいでしょう。"VIL.CNF" の書式は

        ・空行は無視される。

        ・行頭に "'" があれば，その行はコメント行として無視される。

        ・環境変数の設定は，変数名とその内容を一個以上のスペースで区切って書
          く。

        ・変数名の前，内容の後に余分なスペースをつけてはいけない（厳密には，
          行頭から初めてスペースが現れるまでが変数名，そこから連続しているス
          ペースを読み飛ばして，それ以外の文字が現れてから行末までを内容と見
          なす）。

      となっています。付属の "VIL.CNF" を参考にしてください。

        現バージョンにおいて，システムでは次の環境変数を使用します。

        ・VILDIR
          VIL_DIR$ に「内容」が代入されます。
          パッケージファイルのあるドライブおよびディレクトリを指定します。
          （VIL_DIR$+ ファイル名でパッケージファイルを読み込みます）
          設定がなければ内容は "" になります（カレントドライブとみなします）。

        ・APPLICNF
          VIL_APPCNF$ に「内容」が代入されます。
          アプリ設定ファイル（各初期化モジュールで使用）名を指定します。カレ
          ントディレクトリ以外に存在する場合は，ドライブ・パスも指定してくだ
          さい。
          設定がなければ，内容は "APPLI.CNF" になります。

        ・APPLIENV
          VIL_ENV_ENV$ に「内容」が代入されます。


                                   - 6 -

          アプリ環境ファイル（アプリ環境パッケージの説明参照）名を指定します。
          カレントディレクトリ以外に存在する場合は，ドライブ・パスも指定して
          ください。
          設定がなければ内容は "APPLI.ENV" になります。

        ・APPLIORG
          VIL_ENV_ORG$ に「内容」が代入されます。
          初期アプリ環境ファイル（アプリ環境パッケージの説明参照）名を指定し
          ます。
          カレントディレクトリ以外に存在する場合は，ドライブ・パスも指定して
          ください。
          設定がなければ内容は "APPLI.ORG" になります。

        これ以外に，アプリケーション独自の環境変数をプログラマが使用すること
      ができます。"VIL.CNF" 内で定義された環境変数は，変数名が VIL_ENVNAM$()，
      内容が VIL_ENVVAL$() に，順に格納されます。また，VIL_ENVNUM% に， 現在
      定義されている個数が格納されています。

        プログラマが定義した環境変数の内容を知るには，

        変数=デフォルト値
        N%=SEARCH(VIL_ENVNAM$，"環境変数名")
        IF N%>-1 THEN 変数=VIL_ENVVAL$(N%)

        のようにしてください。その環境変数が "VIL.CNF"  に設定されていれば，
      その内容を変数に読み込むことができます。

    §３．３．３ パッケージファイルのマージ

        マージルーチンはマージ処理後削除されます。

        ここを書き換えて "○○.BAS" の代わりに "○○.SRC" とすると，コメント
      入りのパッケージファイルがマージされます（当然○○.SRC  もインストール
      しておく必要があります）。アプリケーションの作成中はオンラインマニュア
      ルとして使えるので便利です。

    §３．３．４ パッケージ用ユーザ定義関数

        パッケージ内で使用されるユーザ定義関数ですが，当然プログラマも使用で
      きます。

        現バージョンでは以下のものが用意されています。

        ・FNVIL_P2S$(X&)
          正のロング整数 X& を文字列に変換する。
          STR$ 関数と異なり先頭にスペースが付かない。

        ・FNVIL_P2SS$(X&，Y%)
          正のロング整数 X& を Y% 桁の文字列に変換する。
          Y% 桁ないときは左にスペースが詰められる。

        ・FNVIL_P2S0$(X&，Y%)
          正のロング整数 X& を Y% 桁の文字列に変換する。
          Y% 桁ないときは左に "0" が詰められる。

        ・FNVIL_I2S$(X&)
          ロング整数 X& を文字列に変換する。
          STR$ 関数と異なり先頭にスペースが付かない。


                                   - 7 -

        ・FNVIL_I2SS$(X&，Y%)
          ロング整数 X& を Y% 桁の文字列に変換する。
          Y% 桁ないときは左にスペースが詰められる。

        ・FNVIL_I2S0$(X&，Y%)
          ロング整数 X& を Y% 桁の文字列に変換する。
          Y% 桁ないときは符号の後，左に "0" が詰められる。

        ・FNVIL_R2S$(X#)
          倍精度実数 X# を文字列に変換する。
          STR$ 関数と異なり先頭にスペースが付かない。

        ・FNVIL_R2SS$(X#，Y%，Z%)
          倍精度実数 X# を整数部分 Y% 桁，小数部分  Z%  桁の文字列に変換する
          （計 Y+Z+1 桁）。
          Y% 桁ないときは左にスペースが詰められる。

        ・FNVIL_R2S0$(X#，Y%，Z%)
          倍精度実数 X# を整数部分 Y% 桁，小数部分  Z%  桁の文字列に変換する
          （計 Y+Z+1 桁）。
          Y% 桁ないときは符号の後，左に "0" が詰められる。

    §３．３．５ ＶＩＬ汎用モジュールの提供

        ＶＩＬの各モジュールが使用する汎用サブルーチンとして，以下のものを提
      供しています。

        ・*VIL_ERR_ON
          エラートラップを有効にします。

        ・*VIL_ERR
          エラートラップルーチンです。
          VIL_E% にエラー番号を格納し，エラー行の次行に復帰します。

        ・*VIL_CNFOP
          アプリ設定ファイルをオープンします。
          正常終了すれば VIL_E% は 0 になります。

        ・*VIL_CNFCL
          アプリ設定ファイルをクローズします。
          正常終了すれば VIL_E% は 0 になります。

        ・*VIL_CNFERR
          アプリ設定ファイルにエラーがあったときの処理ルーチンです。
          現バージョンではエラー行を表示して強制終了します。

        ・*VIL_LNR
          ファイル番号 1 のファイルから一行読み込みます。
          ただし，読み込み結果が空行，あるいは先頭が "'" のときは， 新たに一
          行読みなおします（空行・コメント行のスキップ）。

    §３．３．６ その他の注意事項

        ＶＩＬでは実行時エラー（ディスクの書き込みプロテクトなど）に対処する
      ため，常時エラー割り込みを有効にしています。ローダファイル内のエラート
      ラップルーチンでは， 汎用変数  VIL_E%  にエラー番号をセットし， RESUME
      NEXT により，エラーが発生した次の行に復帰します。



                                   - 8 -

        このため，アプリケーション中でも，

       1. VIL_E%=0

       2. 実行時エラーが起こりうる命令（フロッピーへのファイルオープンなど）
          を実行

       3. VIL_E%>0 なら，エラー対処処理を実行（メッセージ表示など）

      の手順で実行時エラーに対処できます。ただし，単純なシンタックスエラーで
      も止まらずに次の行に進んでしまうため，プログラム開発中はなにかと不都合
      がでてきます。そこで，開発中はアプリケーション中に ON ERROR GOTO 0  を
      書いておくことで，  エラートラップを無効化できます。 また， 必要ならば
      GOSUB *VIL_ERR_ON により割り込みを有効にすることができます。

        CLEAR 文はせっかくローダファイルが行った設定を無効にしてしまうため，
      アプリケーション中では使用できません。  必要ならばローダファイル先頭の
      CLEAR 文を書き換えてください。


  §３．４ パッケージファイル説明


    §３．４．１ パッケージ初期化

        アプリケーションの初期化ルーチン内で，以下の手順を行ってください。

       1. GOSUB *VIL_CNFOP を実行
          アプリ設定ファイルがオープンされます。
          オープンに失敗した場合は，以下の処理が正常に実行されません。この場
          合は VIL_E% にエラーコードが入るので，この値をチェックして適当な処
          理をすることをお勧めします。

       2. 使用するパッケージ毎に，次のようにして初期化モジュールを呼び出して
          ください。

          (a) 入力変数に値を設定（必要な入力変数は，５，６章を参照）。

          (b) GOSUB *VIL_○○_INITM    （○○はパッケージ名）

       3. GOSUB *VIL_CNFCL を実行
          アプリ設定ファイルがクローズされます。
          クローズに失敗した場合，VIL_E% にエラーコードが入ります。

        これによりパッケージ変数の宣言・初期化，画面モード等の設定等が行われ，
      以後そのパッケージ内の機能モジュールを，呼び出すことができるようになり
      ます。

        ただし，各初期化パッケージの呼び出し順序は，アプリ設定ファイルにおけ
      る各パッケージ用データの記述順序と一致するようにしてください。

        使用しないパッケージに関しては，この処理は必要ありません（アプリ設定
      ファイルの該当データは無視されます）。

        このパッケージ初期化処理については，テンプレートとして  VIL_INIT.BAS
      を用意してあります。これを作成プログラムに組み込んで修正すると楽だと思
      います。



                                   - 9 -

    §３．４．２ パッケージ機能の利用

        ３．４．１の手順で初期化すると，機能モジュールが利用できるようになり
      ます。アプリケーション中でパッケージの機能が必要になったときは，

       1. 入力変数に値を設定（必要な入力変数は，５，６章を参照）。

       2. GOSUB *VIL_○○_××    （○○_××はモジュール名）
          として，必要な機能モジュールを呼び出す。

       3. 処理結果が値として返される場合は，必要ならば出力変数（５，６章参照）
          の値を参照する。

        という処理を記述します。


  §３．５ アプリ設定・環境ファイル説明


      アプリケーションが利用するデータのうち，次のようなものはプログラム中に
    直接書かず，データファイルとして独立させる必要があります。

      ・キー割当やマウスカーソルパターンなど，ユーザが修正（いわゆるカスタマ
        イズ）できると便利なデータ

      ・ウィンドウ位置やヒストリなど，アプリケーションの動作により変化し，次
        回の起動まで保存しておく必要のあるデータ

      ＶＩＬでは，前者をアプリ設定ファイル，後者をアプリ環境ファイルと呼ばれ
    るテキストファイルで管理します。また，デフォルトのアプリ設定ファイル，お
    よびアプリ環境ファイルの初期ファイルとして，それぞれ  APPLI.CNF， APPLI.
    ORG が用意されています。

    §３．５．１ アプリ設定ファイル

        ファイル上のデータは，各パッケージの初期化モジュールで読み込まれます。

        全体の書式としては，次のようになっています。

        ・空行はすべて無視される。

        ・行頭が "'" で始まる行は，コメント行として無視される。

        ・各パッケージのデータは，識別行"#パッケージ名" の後に，所定のフォー
          マットで記述します。

        現バージョンでは，以下のデータを記述するようになっています。

        ・BEEP パッケージ
          データなし

        ・WIN パッケージ
          データなし

        ・VKEY パッケージ

            −キー割当テーブル
              APPLI.CNF での割当は，同ファイルを参照してください。


                                   - 10 -

            −パッドボタン割当テーブル
              APPLI.CNF での割当は，同ファイルを参照してください。

        ・MSEL パッケージ

            −ＢＣ描画モード（0: 矩形枠／1: 矩形反転）
              APPLI.CNF では 0

        ・INP パッケージ
          データなし

        ・MG パッケージ
          データなし

        ・VWM パッケージ

            −マウスカーソル資源
              APPLI.CNF では次のようになっています。

                ＊標準マウスカーソル
                  BASIC 標準のシンプルな矢印ではなく，TownsOS などで使用され
                  る影付の矢印

                ＊ウィンドウ移動用マウスカーソル
                  TownsOS などでウィンドウ移動時に使用される，開いた手の形

                ＊ウィンドウサイズ変更用マウスカーソル
                  TownsOS などでウィンドウサイズ変更時に使用される，ピンセッ
                  トの形

            −SBAR パッケージ
              データなし

            −SEL パッケージ
              データなし

    §３．５．２ アプリ環境ファイル

        ウィンドウ位置やヒストリなど，アプリケーションの動作により変化するデ
      ータを，このファイルで保管します。プログラマはこれの初期ファイルとして，
      各データの初期値を記述します。以後はアプリケーション中で，このファイル
      の読み込み／保存を行うことで，変化したデータが保持されていきます。

        全体の書式としては，アプリ設定ファイルと同様に次のようになっています。

        ・空行はすべて無視される。

        ・行頭が "'" で始まる行は，コメント行として無視される。

        ・各パッケージのデータは，識別行"#パッケージ名" の後に，所定のフォー
          マットで記述します。

        現バージョンでは，以下のデータを記述するようになっています。

        ・BEEP パッケージ
          ブザーフラグ（0:OFF/-1:ON）
          APPLI.ORG では -1



                                   - 11 -

        ・WIN パッケージ
          データなし

        ・VKEY パッケージ
          データなし

        ・MSEL パッケージ

            −マウス・パッドのリピート開始までのウェイト
              APPLI.ORG では 50

        ・INP パッケージ

            −ヒストリデータ
              APPLI.ORG では，保存個数 1 の 1 系列のみ

        ・MG パッケージ
          データなし

        ・VWM パッケージ

            −ウィンドウ枠の (G，R，B) 輝度
              APPLI.ORG では，(128，128，128)

            −背景色の (G，R，B) 輝度
              APPLI.ORG では，(0，0，0)

            −ウィンドウ位置
              APPLI.ORG では，1〜10 のみ

        ・SBAR パッケージ
          データなし

        ・SEL パッケージ
          データなし



§４ リファレンスマニュアル書式


    この章では，５，６章での書式について説明します。


  §４．１ パッケ−ジ名


      各パッケージには英字数文字のパッケージ名が付けられています。また，本マ
    ニュアル中のパッケージ呼称として，日本語名も併記しています。

      ・必要パッケージ
        この項に挙げられたパッケージ内のモジュールは，本パッケージ内のモジュ
        ールにより呼び出されることがあります。したがって，アプリケーション中
        でそれらのパッケージを直接使用していなくても，組み込んでおく必要があ
        ります。

      ・パッケージ変数
        このパッケージ内で定義・使用される変数です。汎用変数と異なり，常に意


                                   - 12 -

        味のある値が格納されています。
        この項目では，変数名冒頭の "VIL_" は省略しています。
        初期化モジュールを呼び出すことにより，宣言・初期化されます。

      ・説明
        このパッケージにより提供される機能，使用に際しての注意点等を説明しま
        す。なお，誤解がないと思われる場合，変数名・ラベル名の冒頭の  "VIL_"
        は省略しています。

      以下，本パッケージに含まれる各モジュール名とその使用法が列挙されます。

    §４．１．１ モジュール名

            *VIL_○○_××
                ○○    : パッケージ名
                ××    : モジュール名
        が，モジュールの入口ラベル名になっています。

        最初に挙げられているのが初期化モジュール（モジュール名末尾が "_INITM
      " となっているモジュール）で，パッケージ変数の初期化等を行います。この
      パッケージを使用する場合，アプリケーションの初期化ルーチンで，一度だけ
      このモジュールを呼出して下さい。

        ２番目以降が機能モジュールです。その機能が必要になった時点で呼び出し
      て下さい。

        ・入力変数
          必要なパラメータをアプリケーションから渡すための変数です。

          汎用変数（*VIL_××の形のもの） は他のパッケージにおいて値が破壊さ
          れている可能性があるので，このモジュールを呼び出す直前に必ずこれら
          の変数に適切な値を代入してください。

          パッケージ変数（*VIL_○○_××の形のもの）についても，通常そのモジ
          ュールを呼び出す際に設定するものを挙げてあります。こちらは設定しな
          ければ現在の値が使用されます。

          変数名冒頭の "VIL_" は省略しています。

        ・出力変数
          アプリケーションに処理結果を返すための変数です。必要ならば，このモ
          ジュールからの復帰直後にこれらの値を参照してください（汎用変数の場
          合，他のモジュールを呼出してしまうと値が破壊される場合があります）。

          変数名冒頭の "VIL_" は省略しています。

        ・説明
          このモジュールを呼び出すことにより実現される機能，使用に際しての注
          意点等を説明します。

          誤解がないと思われる場合，変数名・ラベル名の冒頭の "VIL_" は省略し
          ています。








                                   - 13 -




§５ 基本パッケージファイル（VIL_BAS.BAS）


  §５．１ ENV（アプリ環境ファイルパッケージ）


      ◎必要パッケージ
        なし

      ◎パッケージ変数
        ENV_ENV$            アプリ環境ファイル名（パス付）
        ENV_ORG$            初期アプリ環境ファイル名（パス付）

      ◎説明
        環境ファイルのオープン／クローズ処理を行います。

        環境ファイルとは，変数値をファイルに書き出すことによりアプリケーショ
        ンの状態を保存し，次にこのアプリケーションを立ち上げた時に，前の状態
        を再現できるようにするためのものです。本パッケージにより環境ファイル
        をオープンした後，各パッケージの環境ファイル入出力モジュール （ENVR,
        ENVW）を呼び出すことで，ＶＩＬパッケージの状態を保存・復元することが
        できます。また，プログラマが定義した変数を保存・復元することも可能で
        す。

        読み込み時には，

        (a) ENV_ENV$ の内容（環境変数 APPLIENV で指定可能） で示されるファイ
            ルをオープン

        (b) これが存在しなければ，ENV_ORG$ の内容（環境変数 APPLIORG  で指定
            可能）で示されるファイルをオープン

        書き込み時には，

        (a) ENV_ENV$ の内容（環境変数 APPLIENV で指定可能） で示されるファイ
            ルをオープン

        という動作をします。つまり，

          ○アプリ環境ファイルの初期設定版を用意し，ファイル名を APPLIORG に
            指定

          ○別のファイル名を APPLIENV に指定

        しておけば，最初の立ち上げで初期設定版を読み込んだあと書き込みにより
        APPLIENV で指定したファイルを作成し， 次の立ち上げからはこれを使うよ
        うになります。 これを利用すると， CD-ROM から初期設定を読み込んで FD
        に保存したりできます。

    §５．１．１ ENV_INITM（初期化モジュール）

        ◎入力変数
          E%                  0 以外なら初期化処理をせず戻る

        ◎出力変数


                                   - 14 -

          ENV_ENV$            アプリ環境ファイル名（パス付）
          ENV_ORG$            初期アプリ環境ファイル名（パス付）

        ◎説明
          "VIL.CNF" で環境変数 APPLIENV を設定していれば，その内容を（パスを
          含めた）アプリ環境ファイル名とみなします。

          "VIL.CNF" で環境変数 APPLIORG を設定していれば，その内容を（パスを
          含めた）初期アプリ環境ファイル名とみなします。

    §５．１．２ ENV_ROP（アプリ環境ファイル入力オープン）

        ◎入力変数
          ENV_ENV$            アプリ環境ファイル名（パス付）
          ENV_ORG$            初期アプリ環境ファイル名（パス付）

        ◎出力変数
          E%                  0       ：正常終了
                              その他  ：オープン失敗

        ◎説明
          アプリ環境ファイルをリードモードでオープンします。

          ENV_ENV$ で示されるファイルをオープンしますが， これが読めないとき
          は ENV_ORG$ で示されるファイルをオープンします。どちらも読めなけれ
          ば，E% に 0 以外（エラー番号）を返します。

    §５．１．３ ENV_RCL（アプリ環境ファイル入力クローズ）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          リードモードでオープンしたアプリ環境ファイルをクローズします。

    §５．１．４ ENV_WOP（アプリ環境ファイル出力オープン）

        ◎入力変数
          ENV_ENV$            アプリ環境ファイル名（パス付）

        ◎出力変数
          E%                  0       ：正常終了
                              その他  ：オープン失敗

        ◎説明
          環境ファイルをライトモードでオープンします。

          ENV_ENV$ で示されるファイルをオープンします。失敗すれば，E%  に  0
          以外（エラー番号）を返します。

          すでに同名ファイルが存在していた場合は上書きします。

    §５．１．５ ENV_WCL（アプリ環境ファイル出力クローズ）

        ◎入力変数


                                   - 15 -

          なし

        ◎出力変数
          なし

        ◎説明
          ライトモードでオープンした環境ファイルをクローズします。

    §５．１．６ ENV_ERR（アプリ環境ファイルエラー）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          各パッケージのアプリ環境ファイル入出力モジュール（ENVR,ENVW） 中で
          エラーが発生した場合，このモジュールが呼び出されます。現バージョン
          では，環境ファイル中のエラー行を表示して，アプリケーションを強制終
          了します。







































                                   - 16 -



  §５．２ BEEP（ブザー音パッケージ）


      ◎必要パッケージ
        なし

      ◎パッケージ変数
        BEEP_F%             ブザーフラグ（-1:ON / 0:OFF）

      ◎説明
        受理時 / エラー時のブザー音を鳴らします。

    §５．２．１ BEEP_INITM（初期化モジュール）

        ◎入力変数
          E%                  0 以外なら初期化処理をせず戻る

        ◎出力変数
          BEEP_F%             ブザーフラグ（-1:ON に設定）

        ◎説明
          ブザーはデフォルトでオンです。

    §５．２．２ BEEP_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          BEEP_F%             ブザーフラグ（-1:ON / 0:OFF）

        ◎説明
          ブザーフラグをアプリ環境ファイルに保存します。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §５．２．３ BEEP_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          BEEP_F%             ブザーフラグ（-1:ON / 0:OFF）

        ◎出力変数
          なし

        ◎説明
          ブザーフラグをアプリ環境ファイルから読み込みます。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §５．２．４ BEEP_G（受理ブザー音）

        ◎入力変数
          BEEP_F%             ブザーフラグ（-1:ON / 0:OFF）



                                   - 17 -

        ◎出力変数
          なし

        ◎説明
          正常入力時などに鳴らすためのブザー音です。

          BEEP コマンドの隠し機能を利用しているので， このモジュール使用後は
          "BEEP" を実行しても通常の音は出なくなります。

    §５．２．５ BEEP_B（エラー・ブザー音）

        ◎入力変数
          BEEP_F%             ブザーフラグ（-1:ON / 0:OFF）

        ◎出力変数
          なし

        ◎説明
          異常入力時などに鳴らすためのブザー音です。

          BEEP コマンドの隠し機能を利用しているので， このモジュール使用後は
          "BEEP" を実行しても通常の音は出なくなります。






































                                   - 18 -



  §５．３ WIN（ウィンドウ・パッケージ）


      ◎必要パッケージ
        なし

      ◎パッケージ変数
        WIN_X%,WIN_Y%       アクティブウィンドウ左上隅座標
        WIN_W%,WIN_Z%       アクティブウィンドウ右下隅座標
        WIN_UB%,WIN_DB%     ウィンドウ枠の上部・下部幅
        WIN_LB%,WIN_RB%     ウィンドウ枠の左部・右部幅
        WIN_AN%             現在のアクティブウィンドウ番号
                            （0: ウィンドウなし / 1..W1%）
        WIN_PM%             座標モード（0: 絶対座標 / -1: 相対座標）
        WIN_BFMAX&          画面退避バッファサイズ
        WIN_ANMAX%          最大ウィンドウ番号
        WIN_BF%()           画面退避バッファ
        WIN_BFO&()          WIN_BF%() オフセット
        WIN_X%(),WIN_Y%()   ウィンドウ左上隅座標
        WIN_W%(),WIN_Z%()   ウィンドウ右下隅座標

      ◎説明
        マルチウィンドウ表示を行うための，基本機能を提供します。

        画面は 16 色モードのページ 0 を使用します。GET,PUT  でウィンドウを実
        現するため，テキスト表示は使えません（表示はできるがウィンドウに隠れ
        ない）。文字表示は SYMBOL 文を使用してください。

        ページ 1 は本パッケージで使用しないので， アプリケーション側で壁紙表
        示などに利用できます。 この場合，ページ 1 は３万色モードにすることも
        可能です。ただし，入力パッケージで全角入力を行うためには， ページ  1
        はテキスト画面にしておく必要があります。半角文字しか入力しないのであ
        れば， ページ 1 はグラフィック画面としてアプリケーションで使用できま
        す。

        本パッケージでは最小限の機能のみ提供されており，ウィンドウの枠描画や
        移動・サイズ変更などのウィンドウマネージャ機能は用意されていません。
        実際にアプリケーションを作成する場合は，こうした処理を行うルーチンを
        本パッケージの上に被せて使用するとよいでしょう。ＶＩＬの現バージョン
        では，ウィンドウマネージャ・パッケージ（VWM）が用意されており， 本パ
        ッケージのモジュールの代わりに  VWM のモジュールを呼ぶことで，枠描画
        などを含めた処理を行わせることができます。

        現在のバージョンでは次の機能が実現されています。

          ○ウィンドウ領域の退避・復元処理
            指定した範囲の画面情報を GET@A 命令で退避し， その位置にウィンド
            ウを描くことでウィンドウのオープンを，PUT@A 命令で画面情報を戻す
            ことでウィンドウのクローズを実現します。処理自体は充分高速ですが，
            退避用に巨大な配列を必要とするのでフリーエリアの残りに注意してく
            ださい。

            ウィンドウ枠などを描く領域として
              WIN_UB%,WIN_DB%     ウィンドウ枠の上部・下部幅
              WIN_LB%,WIN_RB%     ウィンドウ枠の左部・右部幅
            で指定したドット数分，ウィンドウ左上隅・右下隅座標の上下左右が余


                                   - 19 -

            分に退避されます。

          ○退避データの管理
            各ウィンドウの情報は配列上のスタックとして管理されます。したがっ
            て，本パッケージのマルチウィンドウはウィンドウのスタックとして実
            現されており，一番最後に開かれたウィンドウ（以後一番上のウィンド
            ウ，またはアクティブウィンドウと呼びます）に対してのみ，操作が許
            されています。つまり，ウィンドウＡに続きウィンドウＢを開いた場合，
            Ｂを閉じ（Ａが一番上のウィンドウにな）るまで，Ａに表示したりＡを
            閉じたりすることはできません。

            各ウィンドウは早く開かれたものから順に 1,2,... と番号がつけられ，
            この番号によって管理されます。以後これをウィンドウ番号と呼びます。
            各ウィンドウの情報はこの番号を添え字として，以下の配列変数から読
            み出すことができます。
              WIN_X%(),WIN_Y%()   ウィンドウ左上隅座標
              WIN_W%(),WIN_Z%()   ウィンドウ右下隅座標
              WIN_BF%(WIN_BFO&()) 画面情報
            また，アクティブウィンドウに関しては，
              WIN_AN%             現在のアクティブウィンドウ番号
              WIN_X%,WIN_Y%       アクティブウィンドウ左上隅座標
              WIN_W%,WIN_Z%       アクティブウィンドウ右下隅座標
            が利用できます。

          ○絶対座標／相対座標モードの切替
            通常，グラフィック命令を使用する場合は，画面の左上隅を (0,0), 右
            下隅を (639,479) とする座標系で指定します。 本パッケージではこれ
            を絶対座標系， アクティブウィンドウの左上隅を (0,0) とする座標系
            を相対座標系として，両者を切り換えるモジュールが用意してあります。
            相対座標モードではワールド座標とオリジナルスクリーン座標との対応
            が変更されているため，グラフィック命令の座標指定が相対座標で行え
            ます。また，アクティブウィンドウからはみ出す描画は，自動的にクリ
            ッピングされます。

            現在の座標モードは
              WIN_PM%             座標モード（0: 絶対座標 / -1: 相対座標）
            に格納されています。初期化パッケージ呼出し直後は絶対座標モードで
            す。

        《注意》ウィンドウのオープン／クローズ時には絶対座標モードにしてくだ
                さい。

    §５．３．１ WIN_INITM（初期化モジュール）

        ◎入力変数
          W0&                 画面退避バッファサイズ
          W1%                 最大ウィンドウ番号
          E%                  0 以外なら初期化処理をせず戻る

        ◎出力変数
          なし

        ◎説明
          W0& には，開いているウィンドウの総面積が最大になるとき，必要な大き
          さを指定してください。ウィンドウ枠幅が 0 でないときは， その分も必
          要になります。

          W1% には，最大何枚まで同時にウィンドウを開くかを指定してください。


                                   - 20 -

          WIN_X(0)〜WIN_Z(0) には，(0,0)-(639,479) が格納されますので， アク
          ティブ番号が 0，つまりウィンドウを１枚も開いてないとき，相対座標＝
          絶対座標となります。

    §５．３．２ WIN_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §５．３．３ WIN_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §５．３．４ WIN_OP（ウィンドウ・オープン）

        ◎入力変数
          WIN_X%,WIN_Y%       ウィンドウ左上隅座標
          WIN_W%,WIN_Z%       ウィンドウ右下隅座標

        ◎出力変数
          E%                  0       ：正常終了
                              5       ：オープン失敗（退避領域不足）
          WIN_X%,WIN_Y%
          WIN_W%,WIN_Z%       オープン失敗時のみ，現在のアクティブウィンドウ
                              の値を設定

        ◎説明
          ウィンドウを開きます。実際には指定した矩形領域の画面情報を退避する
          だけです。相対座標モードに切り換えた後，CLS を実行することで，ウィ
          ンドウ内をクリアできます。

          WIN_X%〜WIN_Z% に， 新しく開くウィンドウの座標を設定してください。
          ただしこれらの変数値は，現アクティブウィンドウ座標として各モジュー
          ルで参照されますので，値の設定後，本モジュールを呼び出すまでに，他
          のモジュールを呼ばないようにしてください。

          座標モードは絶対座標モードにしておいてください。

          正常終了のときは，アクティブウィンドウ番号が 1 増やされ，E%  に  0


                                   - 21 -

          が返されます。 退避バッファが足りない時は， 画面退避は行われず，E%
          に 5 を返し，WIN_X%〜WIN_Z% に元のアクティブウィンドウ座標を書き戻
          して終了します。

    §５．３．５ WIN_CL（ウィンドウ・クローズ）

        ◎入力変数
          なし

        ◎出力変数
          WIN_X%,WIN_Y%       新アクティブウィンドウ左上隅座標
          WIN_W%,WIN_Z%       新アクティブウィンドウ右下隅座標

        ◎説明
          退避した矩形領域を復元し，ウィンドウを閉じます。

          アクティブウィンドウ番号は 1 減らされ， 新しいアクティブウィンドウ
          （旧アクティブウィンドウの一つ下のウィンドウ） の座標が， WIN_X%〜
          WIN_Z% に書き戻されます。

          座標モードは絶対座標モードにしておいてください。

          また，ウィンドウ枠幅 WIN_UB%,WIN_DB%,WIN_LB%,WIN_RB% は， 各ウィン
          ドウ毎に保存されていません。したがって枠幅の違うウィンドウを混在さ
          せる時は，本モジュール呼び出し時において，対象アクティブウィンドウ
          のオープン時と同じ値が WIN_UB%〜WIN_RB% に格納されているよう，アプ
          リケーションが責任を持つ必要があります。

    §５．３．６ WIN_CLDMY（ウィンドウ・クロ−ズダミー）

        ◎入力変数
          なし

        ◎出力変数
          WIN_X%,WIN_Y%       新アクティブウィンドウ左上隅座標
          WIN_W%,WIN_Z%       新アクティブウィンドウ右下隅座標

        ◎説明
          画面情報を書き戻さずにアクティブウィンドウに関する情報を放棄します。
          つまり，実際には画面を変更せずに，ウィンドウを閉じたつもりになるモ
          ジュールです。

          ゲームのメインマップなどクローズされることのないウィンドウは，退避
          した画面情報を取っておく必要がありません。この場合は本モジュールを
          呼び出して画面情報を捨ててしまうことにより，退避領域を節約できます。

    §５．３．７ WIN_CLALL（ウィンドウ全クロ−ズ）

        ◎入力変数
          なし

        ◎出力変数
          WIN_X%,WIN_Y%       (0,0)
          WIN_W%,WIN_Z%       (639,479)

        ◎説明
          開かれているウィンドウをすべて閉じます。



                                   - 22 -

          アクティブウィンドウ番号は 0 になり， WIN_X%〜WIN_Z%  には  (0,0)-
          (639,479) が格納されます。

          座標モードは絶対座標モードにしておいてください。

    §５．３．８ WIN_PMR（相対座標モード）

        ◎入力変数
          なし

        ◎出力変数
          WIN_PM%             -1 (相対座標モード)

        ◎説明
          相対座標モードに切り換えます。

          以後，グラフィック命令での座標は，画面の (WIN_X%,WIN_Y%) を  (0,0)
          とする相対座標になります。また，ウィンドウからはみ出すような描画は
          クリッピングされます。

          WIN_PM% には -1 が格納されます。

    §５．３．９ WIN_PMA（絶対座標モード）

        ◎入力変数
          なし

        ◎出力変数
          WIN_PM%             0 (絶対座標モード)

        ◎説明
          絶対座標モードに切り換えます。

          以後， グラフィック命令での座標は， 画面左上隅を  (0,0)， 右下隅を
          (639,479) とする絶対座標となります。

          WIN_PM% には 0 が格納されます。























                                   - 23 -



  §５．４ VKEY（仮想キー・パッケージ）


      ◎必要パッケージ
        なし

      ◎パッケージ変数
        VKEY_KY%            仮想キーコード
        VKEY_KB%()          キー割当テーブル（アスキーコード）
        VKEY_PAD%()         パッド割当テーブル（PAD(1)+PTRIG(1)*9）
        VKEY_PRM%           パッドボタン リピートモード
        VKEY_TC$            一時変更キー定義文字列
        VKEY_TCB$           TC$ 設定時の KB%() 退避用

      ◎説明
        パッドおよびキーボードによる入力を受け付け，仮想的なキーコードを返す
        パッケージです。MSEL や INP パッケージでは，本パッケージの機能を利用
        して，操作キーのカスタマイズができるようになっています。

        仮想キーコードは初期化モジュールによりキーボードやパッドのボタンに割
        り当てられます。この割り当て設定は，アプリ設定ファイルを書き換えるこ
        とにより変更可能です。

        現バージョンにおいて仮想キーコードは以下のようになっています。
        -1          ：取消
        -2          ：決定
        -3          ：非対応
        -4          ：ヌル入力
        -5..-8      ：移動（→←↑↓）
        -9..-12     ：拡張移動（→←↑↓）
        -13         ：ウィンドウマネージャ起動
        -14         ：アクセサリ起動
        -15         ：ＢＳ
        -16         ：削除
        -17         ：クリア

        この仮想キーコードとキーボード／パッドボタンとの対応づけは，以下の形
        式でアプリ設定ファイルに記述します。

          ○キーボード対応テーブル
            各アスキーコードに対応する仮想キーコードを順に並べます。ただし，
            １行に 16 個ずつ計 16 行の形で並べてください。また，１行内のコー
            ドは "," で区切ってください。

          ○パッド対応テーブル
            キーボード対応テーブルと同様に仮想キーコードを並べますが，アスキ
            ーコードの代わりに (PAD(1)+PTRIG(1)*9） が返す値の順に並べます。
            つまり，１行に「方向入力なし」＋「方向ボタン 8 方向」の 9 個を ",
            "  で区切って並べ，これを [A][B][RUN][SELECT] ボタンの組み合わせ
            で 12 行並べます。

        本モジュールではこれを読み込んで対応テーブルの設定を行います。なお，
        アプリケーション中で
          VKEY_KB%()    = 仮想キーコード
          VKEY_PAD%()   = 仮想キーコード
        などとすることで，一時的なキー割当の変更も可能です。


                                   - 24 -

    §５．４．１ VKEY_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §５．４．２ VKEY_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §５．４．３ VKEY_KY（仮想キーチェック）

        ◎入力変数
          なし

        ◎出力変数
          KY%                 入力キーのアスキーコード（入力なし：0）
          K$                  入力キー（入力なし：""）
          VKEY_KY%            仮想キーコード

        ◎説明
          キーボードおよびパッドからの入力をチェックします。

          キーボードからの入力があった場合，VKEY_KY%  に該当キーの仮想キーコ
          ード，K$,KY% に入力文字とそのアスキーコードを格納します。

          パッドからの入力があった場合，押されたボタンの組み合わせに対応した
          仮想キーコードを，VKEY_KY% に格納します。ただし， パッドについては
          一度入力を検出すると，いったん全ボタンが放されていることを検出する
          まで，次の入力には反応しません。つまり，ボタンを押しっぱなしにして
          もリピートは効かなくなっています。

          どちらからも入力がなければ，VKEY_KY% には -4 が格納されます。

    §５．４．４ VKEY_SETTC（一時変更キー定義）

        ◎入力変数
          VKEY_TC$            一時変更キー定義文字列

        ◎出力変数


                                   - 25 -

          VKEY_TCB$           TC$ 設定時の KB%() 退避用
          VKEY_KB%()          キー割当テーブル（アスキーコード）

        ◎説明
          一時的な仮想キーコードの変更を行います。

          たとえばメニュー選択で，

                １．ロード（L）
　              ２．セーブ（S）

          というメニューを作る場合，[L],[l] キーで１番，[S],[s] キーで２番を
          選択できると，いわゆるショートカットキー的なものが実現できて便利で
          す。しかしキー割当テーブルで [L]  を１番選択キーに割り当ててしまう
          と，他のメニューのショートカットキーと衝突する可能性があります。

          そこで本モジュールを用いると，一時的なキー割当変更が簡単にできます。

          VKEY_TC$ に一時変更キー定義を格納して， 本モジュールを呼び出すと，
          キー割当テーブルが変更されます。 元のテーブルの内容は VKEY_TCB$ に
          退避されます。 メニュー選択モジュールなどを呼んだ後， VKEY_RESETTC
          を呼び出すことにより，キー割当テーブルを復元できます。

          一時変更キーの定義は以下の書式で行います。

                "定義キー""選択番号"","［"定義キー""選択番号"","…………］

          例えば上の例では，以下のようにします。

                VIL_VKEY_TC$="L1,l1,S2,s2":GOSUB *VIL_VKEY_SETTC

          本モジュールの呼び出しにより，VKEY_TCB$ は一度クリアされた後，VKEY
          _TC$ に定義されたキーについてのみテーブル退避を行います。 したがっ
          て，２回連続で本モジュールを呼び出すと，一回目の退避結果は失われま
          す。本モジュールの呼び出しまでに，必ず VKEY_RESETTC により前回の退
          避結果を復元しておく必要があります。とくにメニューの階層構造を作る
          場合，注意してください。

    §５．４．５ VKEY_RESETTC（一時変更キー消去）

        ◎入力変数
          VKEY_TCB$           TC$ 設定時の KB%() 退避用

        ◎出力変数
          VKEY_KB%()          キー割当テーブル（アスキーコード）

        ◎説明
          VKEY_SETTC により退避されたキー割当テーブルを復元し， 定義された一
          時変更キーを消去します。











                                   - 26 -



  §５．５ MSEL（メニュー選択パッケージ）


      ◎必要パッケージ
        なし

      ◎パッケージ変数
        MSEL_MN%            メニュー番号（0 のとき無効）
        MSEL_BB%            ボックス番号ＭＩＮ
        MSEL_BE%            ボックス番号ＭＡＸ
        MSEL_BN%            ボックスカーソル（ＢＣ）位置 (ボックス番号)
                            MSEL_MN%>0 のときは無効
        MSEL_BC%            -1:ＢＣ表示済 / 0:ＢＣ未表示
        MSEL_BD%            ボックスの並べ方
                            1:Ｙ方向優先で並べる  (省略時Ｘ方向優先)
                            2:左方向に並べる      (省略時右方向)
                            4:上方向に並べる      (省略時下方向)
                            これらの和を指定
        MSEL_WT%            リピート開始までのウェイト
        MSEL_MRM%           マウスボタン リピートモード
        MSEL_MKM%           移動キー・モード
                            0   ：上下／左右ともそのメニュー内
                            1   ：上下キーが押されたらその旨返して終了
                            2   ：左右キーが押されたらその旨返して終了
        MSEL_CMN%           設定メニュー番号 (0 以外を指定)
        MSEL_CMR%           設定メニュー行数
        MSEL_CR%            設定メニュー現在行 (0〜MSEL_CMR%)
        MSEL_CRB%           MSEL_CR% 保存用
        MSEL_BCM%           ＢＣ描画モード（0: 矩形枠／1: 矩形反転）
        MSEL_X%(),MSEL_Y%() ボックス左上隅座標保存
        MSEL_W%(),MSEL_Z%() ボックス右下隅座標保存
        MSEL_BN%()          ＢＣ位置保存
        MSEL_CX%(),         設定メニュー各行の基準ボックス左上隅座標
        MSEL_CY%()
        MSEL_CW%(),         設定メニュー各行の基準ボックス右下隅座標
        MSEL_CZ%()
        MSEL_CN%()          設定メニュー各行のボックス個数
        MSEL_CL%()          設定メニュー各行のボックス間隔 (左上隅座標間隔)
        MSEL_CBB%()         設定メニュー各行のボックス番号ＭＩＮ
        MSEL_CBE%()         設定メニュー各行のボックス番号ＭＡＸ
        MSEL_CBN%()         MSEL_BN%() 保存用（変更取消時に使用）

      ◎説明
        マウス／パッド／キーボードによるメニュー選択入力を行います。

        一般的なメニューの形式として，項目が縦横に並べられたものを想定し，こ
        の中から特定の項目を選択するインタフェースを提供します。ここでは１つ
        の項目を画面上の長方形の領域とし，以下ボックスと呼びます。そして，マ
        トリクス上に並べられたボックスにより，メニューが構成されるとします。

        実際のメニュー選択は，以下のいずれかの方法によりボックスの一つを選択
        することで行われます。ボックスには順に番号（ボックス番号）が付けられ
        ており，アプリケーションには選択されたボックス番号が返されます。

          ○マウスにより，目的のボックス内を左クリック



                                   - 27 -

          ○画面に表示される矩形枠（ボックスカーソル）を移動キーで動かして目
            的のボックスに合わせ，決定キーを押す

          ○目的のボックスに対応した番号選択キーを押す

        キーやパッドによる選択を行う場合は，仮想キー・パッケージによる仮想キ
        ーコードで入力を処理します。このため，本パッケージでの入力は操作キー
        をカスタマイズ可能です。具体的な方法は，VKEY  パッケージの項を参照し
        てください。

        通常のメニュー選択はボックスのマトリクスから１つだけ選択しますが，ス
        イッチやパラメータ類の設定メニューなどでは，各行毎に１つずつ選択する
        形式がよく用いられます。これ（以下設定メニュー）を実現するためのモジ
        ュールも用意されています。

        相対座標モードのとき，本パッケージにおける座標指定はすべて相対座標と
        なります。

    §５．５．１ MSEL_INITM（初期化モジュール）

        ◎入力変数
          W0%                 最大メニュー番号
          W1%                 最大ボックス数
          W2%                 設定メニュー最大行数

        ◎出力変数
          なし

        ◎説明
          W0% には，メニュー番号の最大値を指定します。メニュー番号とはアプリ
          ケーション全体における各メニューの通し番号であり，各メニューに違う
          番号を付けておくことにより，前回そのメニューを呼び出したときのボッ
          クスカーソル位置が保存されます。

          W1% には，全メニューのうち最大のボックス数を指定します。

          W2% には，全設定メニューのうち，最大の行数を指定します。

          本モジュールを呼び出すことにより，マウス機能の初期化および位置の設
          定が行われます（MOUSE 0 および MOUSE 1）。ただしマウスカーソルは表
          示されません。

          ボックスカーソルは，矩形枠と矩形反転の２種類から選択できます。これ
          はアプリ設定ファイルに 0 または 1 を記述することで指定できます。ア
          プリケーション中で MSEL_BCM% に値を設定することでも指定できますが，
          両者を混在して表示することはできません。

    §５．５．２ MSEL_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          MSEL_WT%            リピート開始までのウェイト

        ◎説明
          リピート開始までのウェイトを，アプリ環境ファイルから読み込みます。



                                   - 28 -

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §５．５．３ MSEL_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          MSEL_WT%            リピート開始までのウェイト

        ◎出力変数
          なし

        ◎説明
          リピート開始までのウェイトを，アプリ環境ファイルに保存します。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §５．５．４ MSEL_M（メニュー選択）

        ◎入力変数
          X%,Y%               基準ボックス左上隅座標
          W%,Z%               基準ボックス右下隅座標
          XN%,YN%             ボックス縦横個数
          XL%,YL%             ボックス縦横間隔 (左上隅座標の間隔)
          C%                  ボックスカーソル（ＢＣ）色
          MSEL_MN%            メニュー番号（0 のとき無効）
          MSEL_BB%            ボックス番号ＭＩＮ
          MSEL_BE%            ボックス番号ＭＡＸ
          MSEL_BN%            ボックスカーソル（ＢＣ）位置 (ボックス番号)
                              MSEL_MN%>0 のときは無効
          MSEL_BC%            -1:ＢＣ表示済 / 0:ＢＣ未表示
          MSEL_BD%            ボックスの並べ方
          MSEL_WT%            リピート開始までのウェイト
          MSEL_MKM%           移動キー・モード

        ◎出力変数
          KN%                 入力番号
                              MSEL_BB%..MSEL_BE%：左クリック／決定／直接選択
                              -1                ：右クリック / 取消
                              -2                ：ボックス外を左クリック
                              -3                ：非対応キー入力
          KY%                 入力キーのアスキーコード（入力なし：0）
          K$                  入力キー（入力なし：""）
          MX%,MY%             左クリック位置 (絶対座標)
          MW%,MZ%             左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          VKEY_KY%            仮想キーコード
          MSEL_BN%()          最後のＢＣ位置 (KN%<1 のときも有効)
          MSEL_BC%            -1（ＢＣ表示済）

        ◎説明
          MSEL_BCMK によりボックスを作成した後，MSEL_IN を呼び出してメニュー
          選択入力を行います。入出力変数の意味や動作などは，各モジュールの項
          を参照してください。

    §５．５．５ MSEL_BCMK（ボックス座標作成）



                                   - 29 -

        ◎入力変数
          X%,Y%               基準ボックス左上隅座標
          W%,Z%               基準ボックス右下隅座標
          XN%,YN%             ボックス縦横個数
          XL%,YL%             ボックス縦横間隔 (左上隅座標の間隔)
          MSEL_BB%            ボックス番号ＭＩＮ
          MSEL_BE%            ボックス番号ＭＡＸ
          MSEL_BD%            ボックスの並べ方

        ◎出力変数
          MSEL_X%(),MSEL_Y%() 各ボックス左上隅座標
          MSEL_W%(),MSEL_Z%() 各ボックス右下隅座標

        ◎説明
          MSEL_IN で使用するボックス座標を作成します。ただし本モジュールでは，
          同形同サイズで等間隔に並んだものしか作れません。より複雑なボックス
          が必要な場合は，アプリケーションでボックス座標を作成してください。
          最も番号の若い（ボックス番号 MSEL_BB% の）ボックスを，基準ボックス
          と呼びます。これの座標を (X%,Y%)-(W%,Z%) で指定し， これと同形同サ
          イズのボックスを縦横いくつずつ並べるかを，XN%,YN% で指定します。ま
          た，XL%,YL% で，ボックス縦横間隔 (左上隅座標の間隔) を指定します。
          これを図にすると下のようになります（MSEL_BB%=1,MSEL_BE%=6,MSEL_BD%
          =0 とする）。

                 ←──── XN%=3 ────→     
            (X%,Y%)                              
                ↓         │← XL% →│         
    　          ┌─┐     ┌─┐     ┌─┐─   
    　     ↑   │１│     │２│     │３│↑   
    　     │   └─┘     └─┘     └─┘     
           │       ↑                      YL%  
         YN%=2    (W%,Z%)                   ↓   
    　     │   ┌─┐     ┌─┐     ┌─┐─   
    　     ↓   │４│     │５│     │６│     
    　          └─┘     └─┘     └─┘     

          MSEL_BB% には基準ボックスの番号，MSEL_BE% には最後のボックス番号を
          指定します。この値により，4 番から 8  番までを選択するメニューなど
          というものも可能です。ただし，
            0 ≦ MSEL_BB% ≦ MSEL_BE%
            MSEL_BE% − MSEL_BB% ＋ 1 = XN% × YN%
          を満たしていなければなりません。
          MSEL_BD% には，ボックスの並べ方を指定します。指定可能な属性には
            1:Ｙ方向優先で並べる  (省略時Ｘ方向優先)
            2:左方向に並べる      (省略時右方向)
            4:上方向に並べる      (省略時下方向)
          が用意されており，これらの和を MSEL_BD% に設定します。例えば  XN%=
          YN%=3 の場合，次のようになります。

            MSEL_BD%=0    MSEL_BD%=1    MSEL_BD%=2    MSEL_BD%=4

            １２３        １４７        ３２１        ７８９
            ４５６        ２５８        ６５４        ４５６
            ７８９        ３６９        ９８７        １２３

            MSEL_BD%=1+2  MSEL_BD%=1+4  MSEL_BD%=2+4  MSEL_BD%=1+2+4

            ７４１      　３６９     　 ９８７   　   ９６３
            ８５２      　２５８     　 ６５４     　 ８５２
            ９６３      　１４７     　 ３２１      　７４１

                                   - 30 -

    §５．５．６ MSEL_IN（メニュー選択入力）

        ◎入力変数
          XN%,YN%             ボックス縦横個数
          C%                  ボックスカーソル（ＢＣ）色
          MSEL_MN%            メニュー番号（0 のとき無効）
          MSEL_BB%            ボックス番号ＭＩＮ
          MSEL_BE%            ボックス番号ＭＡＸ
          MSEL_BN%            ボックスカーソル（ＢＣ）位置 (ボックス番号)
                              MSEL_MN%>0 のときは無効
          MSEL_BC%            -1:ＢＣ表示済 / 0:ＢＣ未表示
          MSEL_BD%            ボックスの並べ方
          MSEL_WT%            リピート開始までのウェイト
          MSEL_MKM%           移動キー・モード
          MSEL_X%(),MSEL_Y%() 各ボックス左上隅座標
          MSEL_W%(),MSEL_Z%() 各ボックス右下隅座標

        ◎出力変数
          KN%                 入力番号
                              MSEL_BB%..MSEL_BE%：左クリック／決定／直接選択
                              -1                ：右クリック / 取消
                              -2                ：ボックス外を左クリック
                              -3                ：非対応キー入力
          KY%                 入力キーのアスキーコード（入力なし :0）
          K$                  入力キー（入力なし :""）
          MX%,MY%             左クリック位置 (絶対座標)
          MW%,MZ%             左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          VKEY_KY%            仮想キーコード
          MSEL_BN%()          最後のＢＣ位置 (KN%<1 のときも有効)
          MSEL_BC%            -1（ＢＣ表示済）

        ◎説明

          メニュー選択入力を行います。本モジュール呼出しの前に，以下の設定を
          行ってください。

            ○MSEL_BB%,MSEL_BE% に，入力可能なメニュー番号の下限・上限を設定
              します。ただし，
                0 ≦ MSEL_BB% ≦ MSEL_BE%
              でなければなりません。

            ○MSEL_X%()〜MSEL_Z%() の添字 MSEL_BB%〜MSEL_BE% の要素に， 各番
              号に対応したボックスの座標を格納します。
              同形同サイズ等間隔のボックスなら，モジュール MSEL_BCMK  により
              作成できます。
              アプリケーションで作成するなら，より複雑なボックスも可能です。
              ただし，マウスクリック時に選択されたボックスの判定は，

               i. MSEL_BB% 番から MSEL_BB% + XN% - 1 番までのボックスと， ク
                  リック位置のＸ座標を比較。

              ii. I 番にクリック位置が含まれたなら，I 番，I + XN% 番，…， I
                  + XN% * (YN% - 1) 番のボックスと，クリック位置のＹ座標を比
                  較。

             iii. J 番にクリック位置が含まれたなら，J 番が選択されたと判定。


                                   - 31 -

              という手順で行っています。そのため，
                I 番，I + XN% 番，…，I + XN% * (YN% - 1) 番
              のボックスの MSEL_X%(),MSEL_W%() は， 同じ値でなければなりませ
              ん。つまり，マトリックス上に並んだボックスの縦の列は，座標が揃
              っていなければならないということです。横の列は座標がずれていて
              も構いません。
              MSEL_BB% 番から MSEL_BB% + XN% - 1 番までのボックスは， 座標が
              小さいものから順に並んでいる必要はありません。このため，YN% を
              1 にして全ボックスを１列にしてしまえば，各ボックスの座標は任意
              に取ることができます。ただし，パッド／キーボードで選択する際に，
              移動キー↑↓は使えなくなります。

            ○XN%,YN% にボックスの縦横個数を設定します。ただし
                MSEL_BE% − MSEL_BB% ＋ 1 = XN% × YN%
              を満たさなければなりません。

            ○MSEL_BD% にボックスの並べ方を設定します。
                1:Ｙ方向優先で並べる  (省略時Ｘ方向優先)
                2:左方向に並べる      (省略時右方向)
                4:上方向に並べる      (省略時下方向)
              の属性の和を指定します。詳しくは MSEL_BCMK  の項を参照してくだ
              さい。

            ○C% にボックスカーソルのパレット番号（0〜15）を設定します。

            ○メニューには，アプリケーション全体で通し番号を付けることができ
              ます。これをメニュー番号と呼び，MSEL_MN% に設定します。1  以上
              の値を設定すると，前回そのメニュー番号で本モジュールを呼び出し
              た時の最終的なボックスカーソル位置が，今回のボックスカーソル位
              置初期値となります。つまり，メニュー毎に違う値を設定するように
              アプリケーションを作成すれば，各メニューのカーソル位置が，次回
              そのメニューを開くときまで保存されます。カーソル位置の保存をし
              ないのであれば， MSEL_MN%  に 0 を設定してください。このときは
              MSEL_BN% に， ボックスカーソル位置の初期値をボックス番号で設定
              します。

            ○ボックスカーソルが既に表示済であれば -1，未表示であれば 0 を設
              定してください。

          以上の設定を行った後， 本モジュールを呼び出すと， ボックスカーソル
          （現在位置のボックス座標と同位置の矩形枠）とマウスカーソルが表示さ
          れます。ボックス自体は具体的に表示されるわけではないので，番号や選
          択項目などの表示はアプリケーションが行ってください。

          この状態で，入力に対して次の処理を行います。ただし，以下の記述にお
          けるキーの名前は，前述した仮想的な選択キーです。

            ○マウスを右クリックか取消キーを押す
              KN% に -1（取消入力）を格納して終了します。

            ○マウスを左クリック
              クリック位置がボックスの一つの中なら，KN% にそのボックス番号を
              格納して終了します。
              この判定は前記した手順で行われるため，ボックス座標の設定には注
              意が必要です。クリック位置がどのボックスにも含まれていなければ，
              KN% には -2（ボックス外を左クリック）が格納されます。また， こ
              のときのクリック位置は， 絶対座標で (MX%,MY%) に格納されます。
              相対座標モードでクリック位置がアクティブウィンドウ内なら，相対


                                   - 32 -

              座標が (MW%,MZ%) に格納されます（この他の場合，MW% は -1）。
              左ボタンが押されっぱなしの場合，本モジュールでは
              １回目の呼び出し      クリックと同じ扱い
              ２回目の呼び出し      VIL_MSEL_WT% で示された時間（単位  1/100
                                    秒）だけウェイトを入れた後，クリックと同
                                    じ扱い
              ３回目以降の呼び出し  クリックと同じ扱い
              となります。一度ボタンを放すと，この回数は初期化されます。した
              がって，ボタンを押しっぱなしにすると，一度入力が起きた後，少し
              間をおいて連続入力が起こるという，リピート機能が実現されます。
              リピート開始までの時間は，アプリケーションで VIL_MSEL_WT% に値
              をセットすることで変更できます。

            ○番号選択キーを押す
              KN% にその番号を格納して終了します。また，ボックスカーソルはそ
              の番号のボックスへと移動します。ただし，ボックス番号の上限およ
              び下限を越えている場合は，非対応キーが押されたとします。

            ○決定キーを押す
              ボックスカーソル位置のボックス番号を KN% に格納して， 終了しま
              す。

            ○非対応キーを押す。
              KN% に -3 を格納して終了します。

            ○ウィンドウマネージャ起動キーを押す
              KN% に -13 を格納して終了します。

            ○移動キー（→←↑↓）を押す
              それぞれの方向に，ボックスカーソルを移動します。MSEL_BD%  の値
              にかかわらず，画面上での移動方向は移動キーの方向と同じです。ま
              た，上下左右の端のボックスから先に移動しようとすると，反対側の
              端に移動します。ただし，MSEL_MKM% の値が
              1のとき： ↑，↓キーが押されたら，それぞれ -7,-8 を KN% に格納
                        して終了
              2のとき： →，←キーが押されたら，それぞれ -5,-6 を KN% に格納
                        して終了
              となります。

          いずれの場合でも，終了時にボックスカーソルは最終位置（ボックスが選
          択された時はそのボックス）に表示されたまま残り，MSEL_BC% は -1  に
          設定されます。都合が悪い場合はモジュール MSEL_BC を一度呼び出すと，
          ボックスカーソルは消去されます。

          メニュー番号 MSEL_MN% に 1 以上が設定されている場合は， ボックスカ
          ーソル位置は，MSEL_BN%(MSEL_MN%) に保存されます。

          マウスカーソルは，本モジュールの終了時に非表示になります。

          本モジュール終了直前の仮想キーコードは，VKEY_KY%  に格納されていま
          す。 アスキーコードおよび入力文字は KY% および K$ に格納されていま
          す。

    §５．５．７ MSEL_BCCHK（各ボックスの指定座標内包チェック）

        ◎入力変数
          MX%,MY%             ボックスに含まれるかを調べる座標
          MSEL_BB%            ボックス番号ＭＩＮ


                                   - 33 -

          MSEL_BE%            ボックス番号ＭＡＸ
          MSEL_X%(),MSEL_Y%() 各ボックス左上隅座標
          MSEL_W%(),MSEL_Z%() 各ボックス右下隅座標

        ◎出力変数
          KN%                 入力番号
                              MSEL_BB%..MSEL_BE%  ：指定座標がボックス内
                              -2                  ：指定座標がボックス外
          MSEL_BN%            ボックスカーソル（ＢＣ）位置 (ボックス番号)
                              （指定座標がボックス内のとき）

        ◎説明
          指定座標 (MX%,MY%) が含まれるボックスの番号を返します。 どのボック
          スにも含まれない場合は -2 を返します。

    §５．５．８ MSEL_CNFM（設定メニュー選択）

        ◎入力変数
          MSEL_CX%(),         各行の基準ボックス左上隅座標
          MSEL_CY%()
          MSEL_CW%(),         各行の基準ボックス右下隅座標
          MSEL_CZ%()
          MSEL_CN%()          各行のボックス個数
          MSEL_CL%()          各行のボックス間隔 (左上隅座標間隔)
          MSEL_CBB%()         各行のボックス番号ＭＩＮ
          MSEL_CBE%()         各行のボックス番号ＭＡＸ
          C%                  ボックスカーソル（ＢＣ）色
          MSEL_CMN%           設定メニュー番号 (0 以外を指定)
          MSEL_CMR%           設定メニュー行数
                              （MN%  は  CMN%〜CNB%+CMR%  までが使用される）
                              （MSEL_BN%(MSEL_CMN%) にはアクティブ行番号を格
                              納）
          MSEL_BC%            -1:ＢＣ表示済 / 0:ＢＣ未表示
          MSEL_BD%            ボックスの並べ方 (0 に設定)
          MSEL_BN%            ボックスカーソル（ＢＣ）位置 (ボックス番号)
          MSEL_MKM%           移動キー・モード (0 に設定)
          MSEL_CR%            現在行 (0〜MSEL_MRN%)
          MSEL_CRB%           MSEL_CR% 保存用
          MSEL_MN%            メニュー番号
          MSEL_X%(),MSEL_Y%() 各ボックス左上隅座標
          MSEL_W%(),MSEL_Z%() 各ボックス右下隅座標

        ◎出力変数
          KN%                 入力番号
                              MSEL_BB%..MSEL_BE%：左クリック／決定／直接選択
                              -1                ：右クリック / 取消
                              -2                ：ボックス外を左クリック
                              -3                ：非対応キー入力
                              -13               ：ＷＭ起動キー
          KY%                 入力キーのアスキーコード（入力なし：0）
          K$                  入力キー（入力なし：""）
          MX%,MY%             左クリック位置 (絶対座標)
          MW%,MZ%             左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          VKEY_KY%            仮想キーコード
          MSEL_BC%            -1（ＢＣ表示済）



                                   - 34 -

        ◎説明
          スイッチ・パラメータ類の設定メニューを実現するための，メニュー選択
          モジュールです。全ボックスが１行に並ぶメニューを複数使用することに
          より，各行毎に１つずつ項目選択できるメニューを実現しています。

          本モジュール呼出しの前に，以下の設定を行ってください。

            ○MSEL_CX%(),MSEL_CY%(),MSEL_CW%(),MSEL_CZ%() に，各行の基準ボッ
              クス左上隅座標・右下隅座標を設定（MSEL_BCMK における X%〜Z% に
              相当）。

            ○MSEL_CN%() に，各行のボックス個数を設定（MSEL_BCMK における XN
              % に相当）。

            ○MSEL_CL%()  に， 各行のボックス間隔 （左上隅座標間隔）  を設定
              （MSEL_BCMK における YL% に相当）。

            ○MSEL_CBB%(),MSEL_CBE%() に，入力可能なメニュー番号の下限・上限
              を設定。ただし，
                0 ≦ MSEL_CBB% ≦ MSEL_CBE%

            ○C% に，ボックスカーソルのパレット番号（0〜15）を設定。

            ○MSEL_CMN% に設定メニュー番号，MSEL_CMR% に設定メニュー行数を，
              それぞれ指定。
              設定メニューでは，実際には行数分だけの個数のメニューを作成しま
              す。このため，各行のボックス番号を保存するために，メニュー番号
              を MSEL_CMN%〜MSEL_CMN% + MSEL_CMR%  まで使用します （MSEL_BN%
              (MSEL_CMN%) にはアクティブ行番号が格納されます）。この範囲が他
              のメニューと重ならないようにしてください。
              また，設定メニュー番号に 0 を指定することはできません。

            ○ボックスカーソルが既に表示済であれば -1，未表示であれば 0 を設
              定。

          以上の設定を行ったあとで本モジュールを呼び出すと，以下のものが表示
          されます。

            ○マウスカーソル

            ○ボックスカーソル
              アクティブ行（現在選択を行っている行）の，現ボックス番号位置に
              表示されます。

            ○ラインカーソル（ボックスカーソルの底辺部分に相当する線分）
              アクティブ行以外の各行には，現ボックス番号を示すマーカーとして，
              これが表示されます。

          この状態で，入力に対して処理を行います。基本的には MSEL_M と同じで
          すが，以下の点が異なります。

            ○マウスを左クリック
              クリック位置がボックスの１つの中なら，ボックス番号およびボック
              スカーソルがそこに移動し，KN% にボックス番号を格納して終了しま
              す。もし非アクティブ行のボックス内なら，アクティブ行もその行に
              移動します。
              クリック位置がすべての行のどのボックスにも含まれていなければ，
              KN% に -2（ボックス外を左クリック）を格納して終了します。


                                   - 35 -

            ○移動キー（→←↑↓）を押す
              →←キーのとき，MSEL_M  と同様にボックスカーソルの移動を行いま
              す。
              ↑↓キーのとき，アクティブ行を上下に移動します。最上・最下行を
              越えようとすると，反対側の端に移動します。ボックスカーソル位置
              は，新アクティブ行の保存されていた位置になります。
              どちらの場合も，モジュールを終了しません。

          いずれの場合でも，終了時にボックスカーソル・ラインカーソルは最終位
          置に表示されたまま残り，MSEL_BC% は -1 に設定されます。 各行の最終
          ボックス番号および最終アクティブ行は保存されます。

    §５．５．９ MSEL_CNFSV（設定メニューの設定保存）

        ◎入力変数
          MSEL_CMN%           設定メニュー番号 (0 以外を指定)
          MSEL_CMR%           設定メニュー行数
                              （MN%  は  CMN%〜CNB%+CMR%  までが使用される）
                              （MSEL_BN%(MSEL_CMN%) にはアクティブ行番号を格
                              納）

        ◎出力変数
          MSEL_CBN%()         MSEL_BN%() 保存用（変更取消時に使用）

        ◎説明
          メニュー番号 MSEL_CMN%〜MSEL_CMN%  +  MSEL_CMR%  の， ボックス位置
          MSEL_BN%  の値を，MSEL_CBN%() に保存します。MSEL_CNFM 呼び出し直前
          に本モジュールを呼ぶことで，設定メニューで変更されうるボックス位置
          のバックアップを取ることができます。

          MSEL_CNFLD（設定メニューの設定復元）と組み合わせて使用すると，設定
          結果のキャンセル機能を実現できます。

    §５．５．１０ MSEL_CNFLD（設定メニューの設定復元）

        ◎入力変数
          MSEL_CMN%           設定メニュー番号 (0 以外を指定)
          MSEL_CMR%           設定メニュー行数
                              （MN%  は  CMN%〜CNB%+CMR%  までが使用される）
                              （MSEL_BN%(MSEL_CMN%) にはアクティブ行番号を格
                              納）

        ◎出力変数
          MSEL_BN%()          MSEL_CBN%() からの復元値

        ◎説明
          メニュー番号 MSEL_CMN%〜MSEL_CMN%  +  MSEL_CMR%  の， ボックス位置
          MSEL_BN%  の値を，MSEL_CBN%() より復元します。MSEL_CNFM の呼び出し
          後に本モジュールを呼ぶことで，設定メニューで変更されたボックス位置
          を元に戻すことができます。

          MSEL_CNFSV（設定メニューの設定保存）と組み合わせて使用すると，設定
          結果のキャンセル機能を実現できます。

    §５．５．１１ MSEL_BC（ボックスカーソル表示 / 消去）

        ◎入力変数
          C%                  ボックスカーソル（ＢＣ）色


                                   - 36 -

          MSEL_BCM%           ＢＣ描画モード（0: 矩形枠／1: 矩形反転）

        ◎出力変数
          なし

        ◎説明
          現在のボックスカーソル位置に，ボックスカーソルを XOR で描画します。
          したがって，呼び出す毎に表示／消去をトグルで行います。

          ＢＣ描画モード MSEL_BCM% が 0 なら矩形枠を，1 なら矩形の反転を描画
          します。

    §５．５．１２ MSEL_LC（ラインカーソル表示 / 消去）

        ◎入力変数
          C%                  ラインカーソル色

        ◎出力変数
          なし

        ◎説明
          現在のボックスカーソル位置に，ラインカーソルを XOR  で描画します。
          したがって，呼び出す毎に表示／消去をトグルで行います。

          ラインカーソルとは，ボックスカーソルの底辺部分に相当する線分です。

      ＊＊＊＊＊　追加事項：ボックス整列モードを導入。＊＊＊＊＊

































                                   - 37 -



  §５．６ INP（入力パッケージ）


      ◎必要パッケージ
        WIN（ウィンドウ・パッケージ）
        MSEL（メニュー選択パッケージ）

      ◎パッケージ変数
        INP_L%              現在の文字列長
        INP_CX%             カーソル位置
        INP_HSP%            ヒストリポインタ
        INP_HSN%            ヒストリ系列番号
        INP_HSMAX%          ヒストリ系列数
        INP_HSO$            ヒストリ系列から押し出された文字列
        INP_HSB%            ヒストリデータ開始位置
        INP_HSE%            ヒストリデータ終了位置
        INP_CF%             入力文字列変更有無フラグ
        INP_HSB%()          ヒストリデータ開始位置
        INP_HSE%()          ヒストリデータ終了位置
        INP_HSPP%()         ヒストリ系列過去方向リンク
        INP_HSNP%()         ヒストリ系列未来方向リンク
        INP_HS$()           ヒストリデータ

      ◎説明
        指定長以内の文字列入力を行うパッケージです。

        入力文字列には，全角・半角を混在させることが可能です。ただし，全角入
        力を行うためには，ページ 1  はテキスト画面にしておく必要があります。
        半角文字しか入力を行わないのであれば， ページ 1 はグラフィック画面と
        してアプリケーションで使用できます。

        また，ヒストリ機能をサポートしています。

        相対座標モードのとき，本パッケージにおける座標指定はすべて相対座標と
        なります。

    §５．６．１ INP_INITM（初期化モジュール）

        ◎入力変数
          W0%                 ヒストリ系列数

        ◎出力変数
          なし

        ◎説明
          W0% にはヒストリの系列数を指定します。

          ヒストリとは，過去に入力された文字列を順に保存し，新たな入力の際に
          これを呼び出すことで，タイピングの手間を省く機能です。メモリの制限
          から保存個数は有限であり，入力回数がこれを越えると古いものから順に
          消えていきます。以下，この入力順の文字列の並びをヒストリ系列と呼び
          ます。

          本パッケージではこのヒストリ系列を，W0% で指定した数だけ扱うことが
          できます。したがって，ファイル名入力と数値入力のヒストリを分ける，
          といったことが可能です。


                                   - 38 -

          また，各系列の保存個数は，アプリ環境ファイルでそれぞれ別個に設定で
          きます。

          本モジュールを呼び出すことにより，マウス機能の初期化および位置の設
          定が行われます（MOUSE 0 および MOUSE 1）。ただしマウスは表示されま
          せん。

    §５．６．２ INP_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          INP_HSB%()          ヒストリデータ開始位置
          INP_HSE%()          ヒストリデータ終了位置
          INP_HSPP%()         ヒストリ系列過去方向リンク
          INP_HSNP%()         ヒストリ系列未来方向リンク
          INP_HS$()           ヒストリデータ

        ◎説明
          ヒストリデータをアプリ環境ファイルから読み込みます。

          形式は以下のようになっています。

            ○各系列の保存個数
              １行に１個ずつ，系列数の数だけ並べます。

            ○各系列のデータ
              系列数の数だけ，ヒストリデータを並べます。ただし，アプリ環境フ
              ァイルでは空行を読み飛ばすので，各データの行頭には "\"  を付加
              し，保存個数分のデータを並べます。

          例えば系列数を 2 とすると，

            4
            2

            \
            \
            \TEST.BAS
            \TEST.EXP

            \
            \

          のように記述すれば，ヒストリ系列 1 は保存個数 4 で，デフォルト文字
          列として TEST.BAS，TEST.EXP が入り，系列 2 は保存個数 2 で，ヒスト
          リの初期状態は空になります。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §５．６．３ INP_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          なし

        ◎出力変数


                                   - 39 -

          なし

        ◎説明
          ヒストリデータをアプリ環境ファイルに保存します。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §５．６．４ INP_STR（文字列入力）

        ◎入力変数
          X%，Y%              入力行左上隅座標
          L%                  入力文字列最大長
          A$                  入力文字列初期値（なければ空文字列）
          C%                  入力文字・カーソル色
          CB%                 背景色
          INP_HSN%            ヒストリ系列番号

        ◎出力変数
          KN%
                              0                 ：決定入力
                              -1                ：取消入力
                              -2                ：左クリック
                              -13               ：ＷＭ起動キー
          K$                  最後の入力キー
          KY%                 最後の入力キーのアスキーコード
          A$                  入力文字列 (KN%=-1 の時は無効)
          MX%，MY%            左クリック位置 (絶対座標)
          MW%，MZ%            左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          INP_L%              現在の文字列長
          INP_CX%             現在のカーソル位置

        ◎説明
          指定長以内の文字列入力を行います。

          INPUT 文を使わないため，サイドワークや割り込みが有効です。

          本モジュール呼出し前に，以下の設定を行ってください。

            ○L% に，何文字までの文字列を受け付けるかを設定 （半角文字での文
              字数）。

            ○A$ に，入力文字列初期値を設定。
              設定されていると，入力行に最初その文字列が表示され，これを編集
              して入力とすることができます。例えばファイル名入力の場合，前回
              の入力値を設定するようにすれば，同じファイル名のときはリターン
              キーを押すだけでよくなります。初期値がない場合は，空文字列を設
              定します。
              ヒストリ機能を使用する場合は，空文字列を設定したほうがいいかも
              しれません。

            ○C%，CB% に，それぞれ入力文字・カーソル色および背景色のパレット
              番号（0〜15）を設定します。

            ○INP_HSN% に，ヒストリの系列番号を指定します。0  を指定すると，
              ヒストリ機能を使用しません。


                                   - 40 -

          本モジュールを呼び出すと，マウスカーソルとカーソル（１文字分の長さ
          の線分），および入力文字列初期値が表示されます。

          この状態で，入力に対して次の処理を行います。なお，以下の記述におけ
          るキーの説明のうち，「（仮想キー）」とあるものは，仮想キーパッケー
          ジにより受け付けられたものを指します。したがって，アプリ設定ファイ
          ルにより任意のキーに割り当てることができます。また，以下の記述にお
          ける「１文字」とは，全角・半角を問わず１文字を指します。

            ○マウスを右クリック，または取消キー（仮想キー）
              KN% に -1（取消入力）を格納して終了します。

            ○マウスを左クリック
              KN% に -2（左クリック）を格納して終了します。また， クリック位
              置を絶対座標で (MX%，MY%) に格納します。相対座標モードなら，相
              対座標が  (MW%， MZ%) に格納され，絶対座標モードなら MW% は -1
              になります。

            ○決定キー（仮想キー）
              KN% に 0（決定入力）を格納して終了します。INP_HSN%>0  のとき，
              この値の番号のヒストリ系列に，現在の A$ の内容を登録します。

            ○ウィンドウマネージャ起動キー（仮想キー）
              KN% に -13（ウィンドウマネージャ起動キー）を格納して終了します。

            ○↑↓移動キー（仮想キー）
              ヒストリを呼び出し，過去の入力文字列を現在編集中の文字列にセッ
              トします。
              ↑を押す毎に，古い入力へと逆上ります。保存個数を越えて逆上ろう
              とすると，いったん空文字列がセットされ，次には再び最新の入力に
              戻ります。
              ↓は逆に，新しい入力へと進めます。
              また，すでに入力途中の文字列が存在する場合は，それを先頭に含む
              ようなヒストリ要素を検索します。

            ○←→移動キー（仮想キー）
              カーソルを左右に１文字分移動します。
              移動可能範囲は文字列先頭から，文字列末尾文字の１つ後までです。

            ○表示可能文字（アスキーコード &H20〜&H7E，&H80〜&HFF）
              編集中の文字列の長さが最大文字列長 L% 以下ならば，カーソル位置
              に入力文字を挿入します。カーソルは１文字分後ろに移動します。

            ○ＢＳキー（仮想キー）
              カーソル位置の１つ前の文字を抹消し，カーソルを１文字前に移動し
              ます。

            ○削除キー（仮想キー）
              カーソル位置の文字を抹消します。

            ○クリアキー（仮想キー）
              編集中の文字列をクリアする。

          終了した場合，A$ には編集された文字列の最終状態が残ります。KN%  の
          値によりこれをどう扱うかは，アプリケーション側に任されます。

          本モジュールは任意文字列の入力を行うため，マウスでは入力できません。
          ただし，ウィンドウマネージャなどで利用するために，左クリック時には


                                   - 41 -

          その位置を返します。また，右クリックで取消入力ができますので，キー
          ボードが使えない時に誤ってこのモジュールを呼んでも，抜けることはで
          きます。

          パッドについては割り当てられた仮想キーの入力ができます。したがって，
          取消キーがボタンに割り当ててあれば，それを押すことで本モジュールを
          終了できます。さらに，通常では上下の方向キーが↑↓キーに割り当てて
          ありますから，前もってヒストリに適当なデフォルト文字列を格納してお
          けば，パッドだけでも，これらを選択して入力することが可能です。

          マウスカーソルは本モジュールの終了時に非表示になります。

    §５．６．５ INP_GPRINT（文字列表示 (グラフィック座標指定)）

        ◎入力変数
          X%，Y%              表示位置
          A$                  表示文字列
          L%                  文字列長
          C%                  文字列表示色
          CB%                 背景色

        ◎出力変数
          なし

        ◎説明
          座標 (X%，Y%) にパレット番号 C% で文字列 A$ を表示します。A$  の長
          さを，半角文字数で指定します（全角文字は 2 文字分と数えます）。

          表示に先立って，表示領域はパレット番号 CB% で塗り潰されます。 した
          がって，同じ座標に文字表示を行った場合，前回の表示は消去されます。

    §５．６．６ INP_FEPON（システム行表示）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：正常終了
                              その他  ：システム行表示領域の退避失敗

        ◎説明
          全角入力のため，システム行を表示します。全角文字を含む入力を行う場
          合は，INP_STR の前に本モジュールを呼び出してください。また，入力後
          には INP_FEPOFF を呼び出すことで，システム行を非表示にできます。

          システム行表示のために，ページ 0 のグラフィック画面のうち (0，464)
          -(639，479) の領域を，WIN パッケージの画面退避バッファに退避し，色
          番号 0 でクリアします。正常終了すれば E% が 0 になります。

          画面退避に失敗した場合は，E% にエラー番号を格納し， クリアせずに終
          了します。

          画面退避には WIN パッケージのバッファを勝手に使用しているため，WIN
          パッケージのモジュールによりウィンドウの操作が行われると，退避デー
          タは失われる可能性があります。このため，INP_FEPON→INP_STR  →INP_
          FEPOFF  という一連の呼び出しの間は，ウィンドウを操作できません。ウ
          ィンドウマネージャ呼び出し等の際には，いったん INP_FEPOFF によりシ
          ステム行を非表示にしてください。


                                   - 42 -

    §５．６．７ INP_FEPOFF（システム行非表示）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          全角入力用のシステム行を，非表示にします。

          INP_STR の後に，本モジュールを呼び出してください。INP_FEPON により
          退避された画面を復元します。

    §５．６．８ INP_MVWAIT（入力待ち）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          次のいずれかが起きるまで待ち，終了します。

            ○マウスが動かされる

            ○左右いずれかのマウスボタンがクリックされる

            ○何かキーが入力される

            ○何かパッドのボタンが入力される。

          ちょっとしたメッセージ表示後の入力待ちなどに使ってください。


























                                   - 43 -



  §５．７ MG（マルチグラフィックス・パッケージ）


      ◎必要パッケージ
        なし

      ◎パッケージ変数
        MG_X%,MG_Y%         画像表示座標
        MG_GN%              画像データ番号
        MG_PN%              パレットデータ番号
        MG_F$               ＭＧ形式データファイル名
        MG_MGD%()           画像データバッファ
        MG_MGI&()           画像データインデックス
        MG_MPD%()           パレットデータバッファ
        MG_MPI&()           パレットデータインデックス

      ◎説明
        ＭＧ（Multi Graphics）形式画像データを管理し，オンメモリで複数パレッ
        トテーブルの切替や画像データの表示を行います。

    §５．７．１ MG_INITM（初期化モジュール）

        ◎入力変数
          W0%                 MGD バッファ要素数
          W1%                 MGI バッファ要素数
          W2%                 MPD バッファ要素数
          W3%                 MPI バッファ要素数

        ◎出力変数
          なし

        ◎説明
          W0%〜W3% に，各バッファのサイズをしていします。

    §５．７．２ MG_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §５．７．３ MG_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          なし

        ◎出力変数
          なし



                                   - 44 -

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §５．７．４ MG_LD（ＭＧ形式ファイル読み込み）

        ◎入力変数
          MG_F$               ＭＧ形式ファイル名

        ◎出力変数
          なし

        ◎説明
          ＭＧ形式のファイルを読み込み，データを各バッファに格納します。

    §５．７．５ MG_SETP（パレットデータ設定）

        ◎入力変数
          MG_PN%              パレットデータ番号

        ◎出力変数
          なし

        ◎説明
          指定したパレットデータ番号のパレットを設定します。

    §５．７．６ MG_PUTG（画像データ表示）

        ◎入力変数
          MG_GN%              画像データ番号
          MG_X%,MG_Y%         表示座標

        ◎出力変数
          なし

        ◎説明
          指定した画像データ番号のパレットを指定座標に表示します。





















                                   - 45 -




§６ ウィンドウマネージャ・パッケージファイル（VIL_VWM.BAS）


  §６．１ VWM（ウィンドウマネージャ・パッケージ）


      ◎必要パッケージ
        WIN（ウィンドウ・パッケージ）
        MSEL（メニュー選択パッケージ）
        INP（入力パッケージ）SBAR（スクロールバー・パッケージ）

      ◎パッケージ変数
        VWM_AT%             アクティブウィンドウ属性
                            （有効なウィンドウ属性の和を指定）
        VWM_T$              アクティブウィンドウ・タイトル
        VWM_ATB%            VWM_AT% 保存
        VWM_PMB%            WIN_PM% 保存
        VWM_WX%，VWM_WY%    座標ワーク
        VWM_XM%，VWM_YM%    移動／リサイズ時左上隅座標最小値
        VWM_WM%，VWM_ZM%    移動／リサイズ時右下隅座標最大値
        VWM_XL%，VWM_YL%    リサイズ時のＸ・Ｙ方向長さ最小値
        VWM_WL%，VWM_ZL%    リサイズ時のＸ・Ｙ方向長さ最大値
        VWM_XD%，VWM_YD%    移動時の単位ドット数
        VWM_WD%，VWM_ZD%    リサイズ時の単位ドット数
        VWM_N%              ウィンドウ通し番号 (0 のとき無効)
        VWM_R%              ウィンドウマネージャ処理結果
        VWM_NMAX%           最大ウィンドウ通し番号
        VWM_CB%             ウィンドウ背景色用パレット番号
        VWM_X%()，VWM_Y%()，通し番号でのウィンドウ位置保存
        VWM_W%()，VWM_Z%()
        VWM_AT%()           ウィンドウ属性
        VWM_T$()            ウィンドウ・タイトル
        VWM_N%()            ウィンドウ通し番号保存
        VWM_CF%()           ウィンドウ枠の (G，R，B) 輝度
        VWM_CB%()           ウィンドウ背景色の (G，R，B) 輝度
                            ☆標準マウスカーソル
        VWM_MCX0%           水平読み取り位置
        VWM_MCY0%           垂直読み取り位置
        VWM_MCA0$           ａｎｄパターン
        VWM_MCD0$           ドットパターン
                            ☆ウィンドウ移動用マウスカーソル
        VWM_MCX1%           水平読み取り位置
        VWM_MCY1%           垂直読み取り位置
        VWM_MCA1$           ａｎｄパターン
        VWM_MCD1$           ドットパターン
                            ☆ウィンドウサイズ変更用マウスカーソル
        VWM_MCX2%           水平読み取り位置
        VWM_MCY2%           垂直読み取り位置
        VWM_MCA2$           ａｎｄパターン
        VWM_MCD2$           ドットパターン

      ◎説明
        ウィンドウ・パッケージ（WIN） とアプリケーションの仲介を行うことによ
        り，より高機能なマルチウィンドウを実現します。



                                   - 46 -

        ウィンドウ・パッケージと同様，画面は 16 色モードでページ 0  を使うこ
        とを前提とし， ページ 1 は特に使用しません。また，同様にテキスト表示
        は使えないので，文字表示は SYMBOL 文を使用してください。

        マウスに関しては，表示ページ 0 で移動範囲 (0，0)-(639，479) を前提と
        します。

        現在のバージョンでは次の機能が提供されています。

          ○ウィンドウ・オープン／クローズ処理代替

          ○ウィンドウマネージャ機能

          ○ウィンドウ管理データの強化

          ○マウスカーソル資源の定義

        本パッケージによりウィンドウのオープン／クローズ処理を行う場合，ウィ
        ンドウパッケージのモジュール WIN_OP，WIN_CL などの代わりに，本パッケ
        ージの VWM_OP，VWM_CL などを呼び出します。これにより，画面の退避／復
        元だけでなく，ウィンドウ枠やスイッチなどの描画も行うことができます。

        ただし，枠幅などの都合上，ウィンドウサイズは最小 60×8， 最大  624×
        456 となります。

        ウィンドウマネージャ機能では，アプリケーションの実行時において，ウィ
        ンドウの移動やサイズ変更などができます。また，このマネージャ機能制御
        用のパッケージ変数として，以下のものが用意されています。
            VWM_XM%，VWM_YM%    移動／リサイズ時左上隅座標最小値
            VWM_WM%，VWM_ZM%    移動／リサイズ時右下隅座標最大値
            VWM_XL%，VWM_YL%    リサイズ時のＸ・Ｙ方向長さ最小値
            VWM_WL%，VWM_ZL%    リサイズ時のＸ・Ｙ方向長さ最大値
            VWM_XD%，VWM_YD%    移動時の単位ドット数
            VWM_WD%，VWM_ZD%    リサイズ時の単位ドット数
        詳しくは VWM_WIN，VWM_MENU の項を参照してください。

        ウィンドウ管理データは，ウィンドウ・パッケージにおける WIN_X%()〜WIN
        _Z%() などに加え，本パッケージにより以下のものが追加されます。

        VWM_AT%()           ウィンドウ属性
                            以下の属性のうち有効なものの和を設定します。

          1 MENU
            メニュースイッチ表示
            メニュースイッチを表示し，VWM_WIN，VWM_MENU により，ウィンドウマ
            ネージャメニューを開けるようになります。

          2 CLOSE
            クローズ可能（スイッチ表示）
            クローズスイッチを表示し，VWM_WIN，VWM_MENU により，そのウィンド
            ウを閉じられるようになります。

          4 HIDE
            一時消去可能（スイッチ表示）
            一時消去スイッチを表示し，VWM_WIN，VWM_MENU により，そのウィンド
            ウを一時消去できるようになります。

          8 MOVE


                                   - 47 -

            移動可能
            VWM_WIN，VWM_MENU により，そのウィンドウを移動できるようになりま
            す。

         16 RESIZE
            サイズ変更可能（スイッチ表示）
            サイズ変更スイッチを表示し，VWM_WIN，VWM_MENU により，そのウィン
            ドウのサイズを変更できるようになります。

       4096 XSCRLBAR
            横方向スクロールバー

       8192 YSCRLBAR
            縦方向スクロールバー

      16384 NOFRAME
            ウィンドウ枠無

        VWM_T$()            ウィンドウ・タイトル
                            設定した文字列をタイトルバーに表示します。
        VWM_N%              ウィンドウ通し番号 (0 のとき無効)
        VWM_X%()，VWM_Y%()，通し番号でのウィンドウ位置保存
        VWM_W%()，VWM_Z%()
                            ウィンドウパッケージにおけるウィンドウ番号は現在
                            画面に重なっている順に付けられた番号ですが，本パ
                            ッケージではこれと別に，アプリケーションが作成す
                            る個々のウィンドウに，プログラム全体を通した管理
                            番号を付けることができます。これをウィンドウ通し
                            番号と呼びます。
                            VWM_N% に 1 以上の値を設定してウィンドウを開いた
                            場合，その座標は WIN_X%〜WIN_Z% ではなく，VWM_X%
                            (VWM_N%)〜VWM_Z%(VWM_N%) となります。また， クロ
                            ーズ時にはその時点でのウィンドウ座標が，これらの
                            変数に保存されます。したがって，ウィンドウをマネ
                            ージャにより移動・サイズ変更した後でいったん閉じ
                            ても，同じ通し番号のウィンドウを開くと，変更後の
                            位置・大きさで開かれるようになります。
                            この機能を利用したくないウィンドウは，VWM_N%  に
                            0 を設定してください。
                            なお，ウィンドウ通し番号 1〜99 は， ＶＩＬが提供
                            する各種ユーティリィなどで使用するためのリザーブ
                            とします。アプリケーションで作成するウィンドウは，
                            通し番号を 100 番以上にしてください。
        VWM_N%()            ウィンドウ通し番号保存
                            VWM_N%(I) で，ウィンドウ番号 I  のウィンドウ通し
                            番号を知ることができます。
        また，アクティブウィンドウに関しては，
        VWM_AT%             アクティブウィンドウ属性
        VWM_T$              アクティブウィンドウ・タイトル
        が利用できます。

        マウスカーソルは，様々な形状のものを状況により使い分けるため，マウス
        カーソル資源と呼ばれる変数群で管理します。その形式は以下のようになっ
        ています。

        水平読み取り位置    VWM_MCX○%
        垂直読み取り位置    VWM_MCY○%
        ａｎｄパターン      VWM_MCA○$


                                   - 48 -

        ドットパターン      VWM_MCD○$
              ○：資源番号

        資源番号○のマウスカーソルを定義するには，

            MOUSE 2，VIL_VWM_MCA○$，VIL_VWM_MCD○$，
                     VIL_VWM_MCX○%，VIL_VWM_MCY○%

        を実行します。

        現バージョンでは以下のものがサポートされています。

          0 標準マウスカーソル
            通常使用されるマウスカーソルです。

          1 ウィンドウ移動用マウスカーソル
            ウィンドウ移動モジュールで，ウィンドウのドラッグ移動時に使用しま
            す。

          2 ウィンドウサイズ変更用マウスカーソル
            ウィンドウサイズ変更モジュールで，サイズ変更スイッチをドラッグす
            る際に使用します。

        各資源のデータは，アプリ設定ファイルで与えるようになっています。

        ウィンドウの形状は，現バージョンでは下図のようなデザインになっていま
        す。


                        クローズスイッチ      ハイライトバー              
                        │一時消去スイッチ    │  メニュースイッチ        
      　        　  ↓  ││ウィンドウタイトル│  │サイズ変更スイッチ    
                  　─┌↓↓──↓──────↓─↓↓┐                  
           16 ドット  │□□ ■WARNING ■■■■■ □□│← タイトルバー   
                    ─│┌─────────────┐│   （上部枠）     
              　　  ↑││(WIN_X%,WIN_Y%)           ││                  
      　        　    ││                          │←─ ウィンドウ枠   
      　　            ││                          ││                  
              　　    ││                         ←── ウィンドウ表示部
              　　    ││                          ││                  
      　          ↓  ││           (WIN_W%,WIN_Z%)││                  
          8 ドット─  │└─────────────┘│                  
              　  ─  └───────────────┘                  
      　        　↑→││←                      →││←                
          　    　     8 ドット                      8 ドット             

          ○クローズスイッチ
            □に×印のスイッチです。
            これを左クリックすると，そのウィンドウを閉じることができます。

          ○一時消去スイッチ
            □に／印のスイッチです。
            これの上でマウスの左ボタンを押すと，押している間そのウィンドウを
            消すことができます。

          ○メニュースイッチ
            □に−印のスイッチです。
            これを左クリックすると，ウィンドウマネージャのメニューウィンドウ


                                   - 49 -

            が表示されます。

          ○サイズ変更スイッチ
            □に┐印のスイッチです。
            マウスの左ボタンでドラッグすることで，ウィンドウのサイズを変更で
            きます。

        以上のスイッチは，各属性が有効のときのみ描画されます。

          ○ウィンドウタイトル
            VWM_T$ に設定したウィンドウ名が表示されます。SYMBOL 文で無理やり
            縮小表示するため，半角文字でもかなり読みづらく，半分飾りです。

          ○タイトルバー
            この部分（で各スイッチにかからない部分）をマウスの左ボタンでドラ
            ッグすることにより，ウィンドウを移動できます。

          ○ハイライトバー
            アクティブウィンドウは，タイトルバーにパレット番号 3  でバーが描
            かれます。

        ウィンドウ枠描画にパレット番号 1〜3 を使用しますので，アプリケーショ
        ン中でこれらのパレット番号を使う場合は注意してください。

        枠のデザインは立体的なものになっていて，

        パレット番号1   明るい部分
        パレット番号2   枠の中心部分
        パレット番号3   影

        となっています。

        また，VWM_OP によりウィンドウを開いた場合， ウィンドウ内は自動的にク
        リアします。このときウィンドウ内を塗り潰す色を
        VWM_CB%             ウィンドウ背景色用パレット番号
        で指定します。

    §６．１．１ VWM_INITM（初期化モジュール）

        ◎入力変数
          W0%                 最大ウィンドウ通し番号
          W1%                 ウィンドウ背景色用パレット番号

        ◎出力変数
          なし

        ◎説明
          W0% には， ウィンドウ通し番号の最大値を指定します。 この値は  VWM_
          NMAX% に格納されます。

          W1% には，ウィンドウオープン時にウィンドウ内を塗り潰すパレット番号
          を指定します。この値は VWM_CB% に格納されます。

          マネージャ機能制御用のパッケージ変数は，以下の値に初期化されます。

          移動／リサイズ時左上隅座標最小値
              (VWM_XM%，VWM_YM%)=(8，14)
          移動／リサイズ時右下隅座標最大値


                                   - 50 -

              (VWM_WM%，VWM_ZM%)=(631，471)
          リサイズ時のＸ・Ｙ方向長さ最小値
              (VWM_XL%，VWM_YL%)=(32，8)
          リサイズ時のＸ・Ｙ方向長さ最大値
              (VWM_WL%，VWM_ZL%)=(624，458)
          移動時の単位ドット数
              (VWM_XD%，VWM_YD%)=(1，1)
          リサイズ時の単位ドット数
              (VWM_WD%，VWM_ZD%)=(1，1)

          本モジュールを呼び出すことにより，以下のマウスカーソル資源のデータ
          が，アプリ設定ファイルより読み込まれます。

          ・標準マウスカーソル
          ・ウィンドウ移動用マウスカーソル
          ・ウィンドウサイズ変更用マウスカーソル

          したがって，設定ファイルを書き換えることにより，各マウスカーソルの
          形状を変更することができます。

          データの記述形式は以下のようになっています。

          水平読み取り位置，垂直読み取り位置    （どちらも 0〜15）
          ａｎｄパターン  ビットパターンを 16 進数表示に直した，長さ 64 の文
                          字列。
                          読み込み後，2 桁ずつをアスキーコードとして文字に変
                          換し，長さ 32 の文字列として格納される。
          ドットパターン  ａｎｄパターンと同形式

    　      [例]

             1， 2
            7FFF3FFF1FFF0FFF07FF03FF01FF00FF007F003F001F00FF00FF187F387FFC7F
            0000000040002000500038005C002E005F002F805E0026004200030001000000

          また，マウスカーソルとして標準マウスカーソルが設定されます。ただし，
          本モジュールではマウス機能の初期化および位置の設定（MOUSE 0 および
          MOUSE 1）は行われませんので， 先にメニュー選択パッケージの初期化モ
          ジュールを呼び出しておく必要があります。

          ウィンドウ枠幅は
              WIN_UB%=14
              WIN_DB%= 8
              WIN_RB%= 8
              WIN_LB%= 8
          に設定されます。もしアプリケーション中で直接ウィンドウ・パッケージ
          を呼ぶなどして，これらの値を変更した場合は，本パッケージ中のモジュ
          ールを呼ぶ前に，必ずこの値に戻してください。

    §６．１．２ VWM_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          VWM_CF%()           ウィンドウ枠の (G，R，B) 輝度
          VWM_CB%()           ウィンドウ背景色の (G，R，B) 輝度
          VWM_X%()，VWM_Y%()，通し番号でのウィンドウ位置保存


                                   - 51 -

          VWM_W%()，VWM_Z%()

        ◎説明
          ウィンドウ枠・背景色の輝度および各ウィンドウの位置を，アプリ環境フ
          ァイルから読み込みます。

          形式は以下のようになっています。

            ○枠の (G，R，B) 輝度

            ○背景色の (G，R，B) 輝度
              それぞれ，0〜255 の数字を 3 個，"," で区切ってならべます。

            ○ウィンドウ位置保存
              ウィンドウ通し番号順に 1〜VWM_NMAX% まで，一行に左上隅Ｘ座標，
              左上隅Ｙ座標，右下隅Ｘ座標，右下隅Ｙ座標の順に "，" で区切って
              並べます。
              なお，右下隅Ｙ座標の後には１個以上のスペースを置けば，コメント
              を書くことができます。

          例えば VWM_NMAX%=110 とすると，

            128，128，128
              0，  0，  0
            100，100，200，200     '  1番のデータ
                :
            240，128，511，191     '110番のデータ

          のようになります。

          また，データの読み込み後に VWM_PALSET が呼び出され，ウィンドウ枠お
          よび背景色は設定しなおされます。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §６．１．３ VWM_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          ウィンドウ枠・背景色の輝度および各ウィンドウの位置を，アプリ環境フ
          ァイルに書き出します。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §６．１．４ VWM_PALSET（ウィンドウ枠・背景色パレット設定）

        ◎入力変数
          VWM_CF%()           ウィンドウ枠の (G，R，B) 輝度
          VWM_CB%()           ウィンドウ背景色の (G，R，B) 輝度
          VWM_CB%             ウィンドウ背景色用パレット番号



                                   - 52 -

        ◎出力変数
          なし

        ◎説明
          ウィンドウ枠・背景色のパレットを設定します。

          ウィンドウ枠は，VIL_CF%() の値を (G，R，B) の輝度として， 以下のよ
          うに設定します。

          パレット番号1   VIL_CF%()+80（最大 255）
          パレット番号2   VIL_CF%()
          パレット番号3   VIL_CF%()-80（最小 0）

          背景色は，パレット番号 VWM_CB% に，VWM_CB%()  の値を輝度として設定
          します。

    §６．１．５ VWM_OP（ウィンドウ・オープン）

        ◎入力変数
          VWM_N%()            ウィンドウ通し番号保存
          ★VWM_N%=0 のとき
          WIN_X%，WIN_Y%      ウィンドウ左上隅座標
          WIN_W%，WIN_Z%      ウィンドウ右下隅座標
          ★VWM_N%<>0 のとき
          VWM_X%(VWM_N%)，    ウィンドウ左上隅座標
          VWM_Y%(VWM_N%)
          VWM_W%(VWM_N%)，    ウィンドウ右下隅座標
          VWM_Z%(VWM_N%)
          VWM_AT%()           ウィンドウ属性（有効な属性の和を指定）
          VWM_T$()            ウィンドウ・タイトル

        ◎出力変数
          E%                  0       ：正常終了
                              5       ：オープン失敗（退避領域不足）
          WIN_X%，WIN_Y%，
          WIN_W%，WIN_Z%      オープン失敗時のみ，現在のアクティブウィンドウ
                              の値を設定
          WIN_PM%             -1（相対座標モード）

        ◎説明
          ウィンドウを開き，枠やスイッチを描画した後，ウィンドウ内をウィンド
          ウ背景色でクリアします。

          VWM_N% に 1 以上を設定したときは，VWM_X%()〜VWM_Z%()  からウィンド
          ウ座標を読み出します。初めてそのウィンドウ通し番号を用いる場合は，
          それ以前に VWM_X%()〜VWM_Z%() を設定するようにしてください。

          VWM_N% に 0 を設定した場合は，WIN_OP と同様に WIN_X%〜WIN_Z%  にウ
          ィンドウ座標を設定してください。

          本モジュールを呼び出すと，以下の処理が行われます。

          (a) 呼出し前のアクティブウィンドウの，ハイライトバーを消去

          (b) WIN_OP により画面情報退避

          (c) ウィンドウ背景色でウィンドウ内クリア



                                   - 53 -

          (d) 枠および各スイッチを描画。
              ただし該当する属性が指定されていなければ，そのスイッチは描かな
              い。

          (e) タイトルおよびハイライトバーを表示

          正常終了のときは E% に 0 が返されますが， 退避バッファが足りない時
          はウィンドウは開かれず， E% に 5 を返し，WIN_X%〜WIN_Z% に元のアク
          ティブウィンドウ座標を書き戻して，終了します。

          終了時には相対座標モードになります。

    §６．１．６ VWM_CL（ウィンドウ・クロ−ズ）

        ◎入力変数
          なし

        ◎出力変数
          WIN_X%，WIN_Y%，    新アクティブウィンドウ左上隅座標
          WIN_W%，WIN_Z%      新アクティブウィンドウ右下隅座標
          VWM_AT%()           ウィンドウ属性（有効な属性の和を指定）
          VWM_T$()            ウィンドウ・タイトル
          VWM_N%              新アクティブウィンドウ通し番号
          ★クローズ前のウィンドウの VWM_N%<>0 のとき
          VWM_X%(VWM_N%)，    ウィンドウ左上隅座標
          VWM_Y%(VWM_N%)
          VWM_W%(VWM_N%)，    ウィンドウ右下隅座標
          VWM_Z%(VWM_N%)     （クローズ前に現在位置・サイズを保存）
          WIN_PM%             -1（相対座標モード）

        ◎説明
          ウィンドウを閉じます。

          VWM_N% が 1 以上ならば，VWM_X%(VWM_N%)〜VWM_W%(VWM_N%)  にウィンド
          ウ座標を保存します。

          また，新たにアクティブとなったウィンドウにハイライトバーを表示し，
          以下の変数にこのウィンドウの値を設定します。
          WIN_X%，WIN_Y%，    ウィンドウ左上隅座標
          WIN_W%，WIN_Z%      ウィンドウ右下隅座標
          VWM_AT%()           ウィンドウ属性
          VWM_T$()            ウィンドウ・タイトル
          VWM_N%              ウィンドウ通し番号
          終了時には相対座標モードになります。

    §６．１．７ VWM_CLDMY（ウィンドウ・ダミークロ−ズ）

        ◎入力変数
          なし

        ◎出力変数
          WIN_X%，WIN_Y%，    新アクティブウィンドウ左上隅座標
          WIN_W%，WIN_Z%      新アクティブウィンドウ右下隅座標
          VWM_AT%()           ウィンドウ属性（有効な属性の和を指定）
          VWM_T$()            ウィンドウ・タイトル
          VWM_N%              新アクティブウィンドウ通し番号
          ★クローズ前のウィンドウの VWM_N%<>0 のとき
          VWM_X%(VWM_N%)，    ウィンドウ左上隅座標


                                   - 54 -

          VWM_Y%(VWM_N%)
          VWM_W%(VWM_N%)，    ウィンドウ右下隅座標
          VWM_Z%(VWM_N%)     （クローズ前に現在位置・サイズを保存）
          WIN_PM%             -1（相対座標モード）

        ◎説明
          画面情報を書き戻さずにアクティブウィンドウに関する情報を放棄します。

          つまり，実際には画面を変更せずに，ウィンドウを閉じたつもりになるモ
          ジュールです。

    §６．１．８ VWM_CLALL（ウィンドウ全クローズ）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          全ウィンドウを閉じます。

    §６．１．９ VWM_CLS（アクティブウィンドウ内クリア）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          アクティブウィンドウ内をウィンドウ背景色でクリアします。

          座標モードは相対座標モードにしておいてください。

    §６．１．１０ VWM_CHECK（ウィンドウマネージャ呼出しチェック）

        ◎入力変数
          MX%，MY%            マウスクリック位置
          KY%                 入力キー
          KN%                 入力番号

        ◎出力変数
          VWM_R%              マネージャ処理結果

        ◎説明
          ウィンドウマネージャの呼出しチェックを行います。

          MSEL_M/MSEL_IN/INP_STR の呼出し直後に， このモジュールを呼び出すこ
          とで，以下の処理を行います。

            ○ウィンドウ枠の各スイッチを左クリック → VWM_WIN を呼出

            ○ウィンドウマネージャ起動キーを押す → VWM_MENU を呼出

          ユーザが作成した入力ルーチンにおいても，

            ○マウス左クリック時には，KN% に -2，(MX%，MY%) にクリック位置を


                                   - 55 -

              格納

            ○ウィンドウマネージャ起動キーが押されたときは，MSEL_KY% に  -13
              を格納

          という条件を満たしていれば，本モジュールを呼び出してウィンドウマネ
          ージャを起動することができます。

    §６．１．１１ VWM_WIN（スイッチ版ウィンドウマネージャ）

        ◎入力変数
          MX%，MY%            マウスクリック位置

        ◎出力変数
          VWM_R%              マネージャ処理結果

        ◎説明
          ウィンドウ枠スイッチの左クリックによる，各マネージャ機能の呼出しを
          行います。

          (MX%，MY%) にクリック位置を格納して， 本モジュールを呼び出してくだ
          さい。アクティブウィンドウの各スイッチと座標を比較し，いずれかの上
          であれば，該当するマネージャ機能を呼び出します。

    §６．１．１２ VWM_MENU（メニュー版ウィンドウマネージャ）

        ◎入力変数
          WIN_X%，WIN_Y%      マネージャウィンドウ左上隅座標

        ◎出力変数
          VWM_R%              マネージャ処理結果

        ◎説明
          ウィンドウマネージャメニューを開き，選択されたマネージャ機能の呼出
          しを行います。

          (WIN_X%，WIN_Y%) にメニューウィンドウの左上隅座標を格納して， 本モ
          ジュールを呼び出してください。 50×98 のウィンドウが開かれ，メニュ
          ー選択パッケージにより呼び出す機能の選択を行います。このとき，属性
          が指定されていない機能は暗色で表示され，選択できません。

          メニューの一番下に "<INFO>" が用意されていますが，これはウィンドウ
          情報を表示させるモジュール VWM_INF を呼び出すものです。 これを直接
          呼び出すスイッチは用意されていませんので，マウス操作ではメニュース
          イッチをクリックして本モジュールのメニューを選択することになります。

          ウィンドウの一時消去／移動／サイズ変更では，各マネージャ機能がキー
          ボード操作版とマウス操作版のモジュールにわかれています。そこで，本
          モジュールのメニュー選択をマウスで行ったかキーボード／パッドで行っ
          たかで，呼び出すモジュールを決定しています。また，移動／サイズ変更
          のマウス操作版を呼び出す際には，マウスカーソル位置を適当に変更して
          います。

    §６．１．１３ VWM_INF（情報表示）

        ◎入力変数
          WIN_X%，WIN_Y%      情報ウィンドウ左上隅座標



                                   - 56 -

        ◎出力変数
          E%                  0       ：正常終了
                              5       ：オープン失敗（退避領域不足）

        ◎説明
          ウィンドウ情報を表示します。

          (WIN_X%，WIN_Y%) に情報ウィンドウの左上隅座標を設定して， 本モジュ
          ールを呼び出してください。184×92 のウィンドウが開かれ，以下の情報
          が表示されます。

            ○POSITION  ：(○○，○○)
              アクティブウィンドウの左上隅座標

            ○SIZE      ：○○×○○
              アクティブウィンドウの縦横長さ

            ○WINDOW    ：○○/○○
              現アクティブ番号 / 最大アクティブウィンドウ

            ○FREE      ：○○K/○○K
              ウィンドウ退避領域の残量 / 全領域量
              単位はキロバイト

          データ表示後，INP_MVWAIT により入力待ちを行い， マウス移動／クリッ
          ク／キー入力でウィンドウを閉じて終了します。

          正常終了時には E% に 0 を返し， 退避領域不足でウィンドウを開けなか
          った時は E% に 5 を返してなにもせずに終了します。

    §６．１．１４ VWM_MOVE（移動・インタフェース）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：移動正常終了
                              5       ：移動失敗（退避領域不足）
          VWM_R%              8       ：移動実行
                              0       ：移動中止（中止操作／移動失敗）

        ◎説明
          マウス操作により，アクティブウィンドウの移動を行います。

          本モジュールが呼ばれた時点で，マウスの左ボタンは押された状態にある
          ことを前提にしています（放されていれば何もせずに終了します）。

          本モジュールが呼び出されると，マウスカーソルはウィンドウ移動用マウ
          スカーソルになります。また，アクティブウィンドウの周囲に，色番号 7
          で矩形枠が描かれます。

          この状態で左ボタンを押したままマウスを動かすと，矩形枠が移動します。
          このときＸ，Ｙ軸方向への移動は，VWM_XD%，VWM_YD%  で指定された値を
          単位として行われます。例えば VWM_XD%=4，VWM_YD%=8 なら，Ｘ軸方向へ
          の移動は 4 ドットづつ，Ｙ軸方向への移動は 8 ドットづつになります。
          また，(VWM_XM%，VWM_YM%)-(VWM_WM%，VWM_ZM%) の範囲外には移動できま
          せん。



                                   - 57 -

          左ボタンを放すと，その時点での矩形枠の位置に，アクティブウィンドウ
          を移動させて終了します。ただし，放した時点で右ボタンが押されていれ
          ば，移動を行いません。どちらの場合もマウスカーソルは標準マウスカー
          ソルになります。

          移動を行った場合，VWM_R% には 8 が返されます。移動を行わなかった場
          合は 0 になります。また， 退避領域不足のため移動ができなかった場合
          は，E% に 5 が返されます。

    §６．１．１５ VWM_KMOVE（移動・キー版インタフェース）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：移動正常終了
                              5       ：移動失敗（退避領域不足）
          VWM_R%              8       ：移動実行
                              0       ：移動中止（中止操作／移動失敗）

        ◎説明
          キーボード／パッド操作により，アクティブウィンドウの移動を行います。

          本モジュールが呼び出されると，アクティブウィンドウの周りに矩形枠が
          現れます。これを移動キーで動かし，決定キーを押すとその時点の矩形枠
          の位置にアクティブウィンドウが移動します。取消キーを押すと，移動せ
          ずに終了します。また，拡張移動キーを入力すると，移動キーの 8  倍単
          位で動かすことができます。

          移動単位・範囲や返り値については，VWM_MOVE と同じです。

    §６．１．１６ VWM_MV（移動・移動処理）

        ◎入力変数
          WIN_X%，WIN_Y%      移動先ウィンドウ左上隅座標

        ◎出力変数
          E%                  0       ：移動正常終了
                              5       ：移動失敗（退避領域不足）
          ☆E%=0 のとき
          WIN_W%，WIN_Z%      移動先のウィンドウ右下隅座標
          VWM_R%              8 : 移動実行
          ☆E%=5 のとき
          WIN_X%，WIN_Y%      移動前のウィンドウ左上隅座標
          VWM_R%              0 : 移動失敗

        ◎説明
          アクティブウィンドウを移動します。

          WIN_X%，WIN_Y%  に新しい位置の左上隅座標を設定して本モジュールを呼
          ぶと，アクティブウィンドウがその位置に移動します。

          移動には，アクティブウィンドウの面積分の退避領域を必要とします。こ
          れが確保できないときは，E% に 5，VWM_R% に 0 を返し， 移動は行いま
          せん。

    §６．１．１７ VWM_CLOSE（クローズ）



                                   - 58 -

        ◎入力変数
          なし

        ◎出力変数
          VWM_R%              2 : クローズ正常終了

        ◎説明
          アクティブウィンドウをクローズします。

          VWM_R% に 2 を返す以外は，VWM_CL と動作は同じです。

    §６．１．１８ VWM_HIDE（一時消去・インタフェース）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：一時消去正常終了
                              5       ：一時消去失敗（退避領域不足）
          VWM_R%              4       ：一時消去実行
                              0       ：一時消去中止（一時消去失敗）

        ◎説明
          アクティブウィンドウを一時消去します。

          本モジュールが呼ばれた時点で，マウスの左ボタンは押された状態にある
          ことを前提にしています（放されていれば何もせずに終了します）。

          本モジュールが呼び出されると，アクティブウィンドウは表示内容を退避
          領域に保存して，いったんクローズされます。

          左ボタンが放されると，再び同位置同サイズにオープンされ，表示内容が
          復元されます。アクティブウィンドウの下になっている部分を一時的に表
          示させたいときに使用します。

          一時消去には，アクティブウィンドウの面積分の退避領域を必要とします。
          これが確保できないときは，E% に 5，VWM_R% に 0 を返し， 一時消去は
          行いません。

    §６．１．１９ VWM_KHIDE（一時消去・キー版インタフェース）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：一時消去正常終了
                              5       ：一時消去失敗（退避領域不足）
          VWM_R%              4       ：一時消去実行
                              0       ：一時消去中止（一時消去失敗）

        ◎説明
          アクティブウィンドウ一時消去の，キー操作版です。

          本モジュールが呼び出されると，アクティブウィンドウは一時クローズさ
          れます。その後なにかキーが入力されると，再びアクティブウィンドウを
          オープンして表示内容を復元します。必要な退避領域や返り値の意味は，
          VWM_HIDE と同じです。



                                   - 59 -

    §６．１．２０ VWM_HD0（一時消去・ウィンドウ一時退避処理）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：一時消去正常終了
                              5       ：一時消去失敗（退避領域不足）

        ◎説明
          ウィンドウパッケージの退避領域に，アクティブウィンドウの表示内容を
          退避します。

          正常終了すれば E% に 0 を，領域不足で失敗すれば 5 を返します。

    §６．１．２１ VWM_HD1（一時消去・ウィンドウ再表示処理）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          VWM_HD0 が退避したアクティブウィンドウの表示内容を復元します。

    §６．１．２２ VWM_HD2（一時消去・再退避／ウィンドウ再表示）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現在の画面を退避し直して，ウィンドウを再表示します。

    §６．１．２３ VWM_RESIZE（サイズ変更・インタフェース）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：サイズ変更正常終了
                              5       ：サイズ変更失敗（退避領域不足）
          VWM_R%              16      ：サイズ変更実行
                              0       ：サイズ変更中止
                              （中止操作／サイズ変更失敗）

        ◎説明
          マウス操作により，アクティブウィンドウのサイズ変更を行います。

          本モジュールが呼ばれた時点で，マウスの左ボタンは押された状態にある
          ことを前提にしています（放されていれば何もせずに終了します）。

          本モジュールが呼び出されると，マウスカーソルはウィンドウサイズ変更
          用マウスカーソルになり，サイズ変更スイッチの上に移動します。また，
          アクティブウィンドウの周囲に，色番号 7 で矩形枠が描かれます。


                                   - 60 -

          この状態で左ボタンを押したままマウスを動かすと，矩形枠の形と大きさ
          が変化します。このときＸ，Ｙ軸方向のサイズ変化は，VWM_WD%，VWM_ZD%
          で指定された値を単位として行われます。例えば VWM_WD%=4， VWM_ZD%=8
          なら，Ｘ軸方向のサイズは 4 ドットづつ，Ｙ軸方向のサイズは 8 ドット
          づつ変化します。また，(VWM_XM%，VWM_YM%)-(VWM_WM%，VWM_ZM%) の範囲
          外にはみ出すことはできません。

          左ボタンを放すと，その時点での矩形枠の形にアクティブウィンドウが変
          化して終了します。アクティブウィンドウ内の表示は左上隅を新しい形に
          合わせて表示し直されます。元より大きくなった部分に関してはなにも表
          示されませんし，小さくなってはみ出した部分はクリッピングされ捨てら
          れます。

          左ボタンを放した時点で右ボタンが押されていれば，サイズ変更を行いま
          せん。

          どちらの場合もマウスカーソルは標準マウスカーソルになります。

          サイズ変更を行った場合，VWM_R% には 16 が返されます。 移動を行わな
          かった場合は  0 になります。また，退避領域不足のため移動ができなか
          った場合は，E% に 5 が返されます。

    §６．１．２４ VWM_KRESIZE（サイズ変更・キー版インタフェース）

        ◎入力変数
          なし

        ◎出力変数
          E%                  0       ：サイズ変更正常終了
                              5       ：サイズ変更失敗（退避領域不足）
          VWM_R%              16      ：サイズ変更実行
                              0       ：サイズ変更中止
                              （中止操作／サイズ変更失敗）

        ◎説明
          キーボード／パッド操作により，アクティブウィンドウのサイズ変更を行
          います。

          本モジュールが呼び出されると，アクティブウィンドウの周りに矩形枠が
          現れます。これを移動キーで動かし，決定キーを押すとその時点の矩形枠
          の形にアクティブウィンドウが変化します。取消キーを押すと，移動せず
          に終了します。また，拡張移動キーを入力すると，移動キーの 8  倍単位
          で動かすことができます。

          サイズ変更単位・範囲や返り値については，VWM_RESIZE と同じです。

    §６．１．２５ VWM_RS（サイズ変更実行）

        ◎入力変数
          WIN_X%，WIN_Y%      リサイズ後のウィンドウ左上隅座標
          WIN_W%，WIN_Z%      リサイズ後のウィンドウ右下隅座標

        ◎出力変数
          E%                  0       ：サイズ変更正常終了
                              5       ：サイズ変更失敗（退避領域不足）
          ☆E%=0 のとき
          VWM_R%              16 : サイズ変更実行
          ☆E%=5 のとき


                                   - 61 -

          WIN_X%，WIN_Y%      移動前のウィンドウ左上隅座標
          WIN_W%，WIN_Z%      移動前のウィンドウ右下隅座標
          VWM_R%              0 : サイズ変更失敗

        ◎説明
          アクティブウィンドウのサイズを変更します。

          WIN_X%，WIN_Y% および WIN_W%，WIN_Z% に，新しい位置の左上隅， 右下
          隅座標を設定して本モジュールを呼ぶと，アクティブウィンドウがその形
          に変化します。

          手順としては，まずアクティブウィンドウの表示内容を退避領域に退避し
          た後，ウィンドウをいったんクローズし，指定座標を使って再びオープン
          します。この新しいアクティブウィンドウ上に，退避しておいた旧ウィン
          ドウの表示内容を復元します。このとき，左上隅を合わせて表示します。
          したがって，サイズが大きくなった場合は右・下に空白領域ができます。
          また，小さくなった場合ははみ出した分がクリッピングされ，捨てられま
          す。

          サイズ変更には，元のアクティブウィンドウの面積分の退避領域を必要と
          します。これが確保できないときは，E% に 5，VWM_R% に 0 を返し， サ
          イズ変更は行いません。

      ＊＊＊＊＊　追加事項：スクロールバー機能を追加　＊＊＊＊＊




































                                   - 62 -



  §６．２ SBAR（スクロールバー・パッケージ）


    ＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

    マニュアルが間に合わなかったので，現時点では VIL_VWM.SRC  のコメントを参
    照してください m(__)m。

    ＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

















































                                   - 63 -



  §６．３ SEL（選択パッケージ）


      ◎必要パッケージ
        MSEL（メニュー選択パッケージ）

      ◎パッケージ変数
        なし

      ◎説明
        実行／取消など，汎用的と思われる選択ルーチンを集めたものです。

    §６．３．１ SEL_INITM（初期化モジュール）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

    §６．３．２ SEL_ENVR（アプリ環境ファイル読み込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_ROP を呼び出して， アプリ環境ファイル
          を入力オープンしておいてください。

    §６．３．３ SEL_ENVW（アプリ環境ファイル書き込み）

        ◎入力変数
          なし

        ◎出力変数
          なし

        ◎説明
          現バージョンではダミーです。

          本モジュール呼び出し前に ENV_WOP を呼び出して， アプリ環境ファイル
          を出力オープンしておいてください。

    §６．３．４ SEL_OK（「確認」選択）

        ◎入力変数
          X%，Y%             「確認」ボックス左上隅座標



                                   - 64 -

        ◎出力変数
          KN%                 入力番号
                              1     ：決定／選択（1: 確認）
                              -1    ：取消
                              -2    ：ボックス外を左クリック
                              -3    ：非対応キー入力
                              -13   ：ウィンドウマネージャ起動キー
          KY%                 入力キーのアスキーコード（入力なし :0）
          K$                  入力キー（入力なし :""）
          MX%，MY%            左クリック位置 (絶対座標)
          MW%，MZ%            左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          MSEL_KY%            選択キーコード
          MSEL_BC%            -1（ＢＣ表示済）

        ◎説明
          確認入力待ちを行うためのモジュールです。

          (X%，Y%) を左上座標として 40×24 ドットのボックスを１つ作成し， そ
          の中に「確認」と表示してメニュー選択を行います。

    §６．３．５ SEL_YN（「はい」「いいえ」選択）

        ◎入力変数
          X%，Y%             「はい」ボックス (56x24 ドット) 左上隅座標
          MSEL_BN%            ボックスカーソル初期位置（1: はい／2: いいえ）

        ◎出力変数
          KN%                 入力番号
                              1,2   ：決定／選択（1: はい／2: いいえ）
                              -1    ：取消
                              -2    ：ボックス外を左クリック
                              -3    ：非対応キー入力
                              -13   ：ウィンドウマネージャ起動キー
          KY%                 入力キーのアスキーコード（入力なし :0）
          K$                  入力キー（入力なし :""）
          MX%，MY%            左クリック位置 (絶対座標)
          MW%，MZ%            左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          MSEL_KY%            選択キーコード
          MSEL_BC%            -1（ＢＣ表示済）
          MSEL_BN%            最後のＢＣ位置 (KN<1 のときも有効)

        ◎説明
          肯定／否定の選択入力を行うモジュールです。

          (X%，Y%) を左上座標として，56×24 ドットのボックスを２つ作成し，そ
          の中に「はい」「いいえ」と表示してメニュー選択を行います。

          ２つのボックスの間は 8 ドットです。

    §６．３．６ SEL_DO（「実行」「取消」選択）

        ◎入力変数
          X%，Y%             「実行」ボックス (40x24 ドット) 左上隅座標
          MSEL_BN%            ボックスカーソル初期位置（1: 実行／2: 取消）


                                   - 65 -

        ◎出力変数
          KN%                 入力番号
                              1,2   ：決定／選択（1: 実行／2: 取消）
                              -1    ：取消
                              -2    ：ボックス外を左クリック
                              -3    ：非対応キー入力
                              -13   ：ウィンドウマネージャ起動キー
          KY%                 入力キーのアスキーコード（入力なし :0）
          K$                  入力キー（入力なし :""）
          MX%，MY%            左クリック位置 (絶対座標)
          MW%，MZ%            左クリック位置 (相対座標)
                              (ともに KN%=-2 の時有効)
                              ただしウィンドウ外クリックの時 MW%=-1
          MSEL_KY%            選択キーコード
          MSEL_BC%            -1（ＢＣ表示済）
          MSEL_BN%            最後のＢＣ位置 (KN<1 のときも有効)

        ◎説明
          操作の実行または取消を選択させるような場合に使用するモジュールです。

          (X%，Y%) を左上座標として，40×24 ドットのボックスを２つ作成し，そ
          の中に「実行」「取消」と表示してメニュー選択を行います。

          ２つのボックスの間は 8 ドットです。




































                                   - 66 -

                                  〜　目次　〜

１ ＶＩＬ概要 ............................................................ 1
    １．１ ＶＩＬとは .................................................... 1
    １．２ 機能概要 ...................................................... 1
２ ＶＩＬ概念 ............................................................ 2
３ ＶＩＬ使用法 .......................................................... 3
    ３．１ インストール .................................................. 3
    ３．２ アプリケーション作成手順 ...................................... 4
    ３．３ ローダファイル説明 ............................................ 5
        ３．３．１ 汎用変数 .............................................. 5
        ３．３．２ 設定ファイル "VIL.CNF" と環境変数 ..................... 6
        ３．３．３ パッケージファイルのマージ ............................ 7
        ３．３．４ パッケージ用ユーザ定義関数 ............................ 7
        ３．３．５ ＶＩＬ汎用モジュールの提供 ............................ 8
        ３．３．６ その他の注意事項 ...................................... 8
    ３．４ パッケージファイル説明 ........................................ 9
        ３．４．１ パッケージ初期化 ...................................... 9
        ３．４．２ パッケージ機能の利用 ................................. 10
    ３．５ アプリ設定・環境ファイル説明 ................................. 10
        ３．５．１ アプリ設定ファイル ................................... 10
        ３．５．２ アプリ環境ファイル ................................... 11
４ リファレンスマニュアル書式 ........................................... 12
    ４．１ パッケ−ジ名 ................................................. 12
        ４．１．１ モジュール名 ......................................... 13
５ 基本パッケージファイル（VIL_BAS.BAS）................................. 14
    ５．１ ENV（アプリ環境ファイルパッケージ）........................... 14
        ５．１．１ ENV_INITM（初期化モジュール）......................... 14
        ５．１．２ ENV_ROP（アプリ環境ファイル入力オープン）............. 15
        ５．１．３ ENV_RCL（アプリ環境ファイル入力クローズ）............. 15
        ５．１．４ ENV_WOP（アプリ環境ファイル出力オープン）............. 15
        ５．１．５ ENV_WCL（アプリ環境ファイル出力クローズ）............. 15
        ５．１．６ ENV_ERR（アプリ環境ファイルエラー）................... 16
    ５．２ BEEP（ブザー音パッケージ）.................................... 17
        ５．２．１ BEEP_INITM（初期化モジュール）........................ 17
        ５．２．２ BEEP_ENVR（アプリ環境ファイル読み込み）............... 17
        ５．２．３ BEEP_ENVW（アプリ環境ファイル書き込み）............... 17
        ５．２．４ BEEP_G（受理ブザー音）................................ 17
        ５．２．５ BEEP_B（エラー・ブザー音）............................ 18
    ５．３ WIN（ウィンドウ・パッケージ）................................. 19
        ５．３．１ WIN_INITM（初期化モジュール）......................... 20
        ５．３．２ WIN_ENVR（アプリ環境ファイル読み込み）................ 21
        ５．３．３ WIN_ENVW（アプリ環境ファイル書き込み）................ 21
        ５．３．４ WIN_OP（ウィンドウ・オープン）........................ 21
        ５．３．５ WIN_CL（ウィンドウ・クローズ）........................ 22
        ５．３．６ WIN_CLDMY（ウィンドウ・クロ−ズダミー）............... 22
        ５．３．７ WIN_CLALL（ウィンドウ全クロ−ズ）..................... 22
        ５．３．８ WIN_PMR（相対座標モード）............................. 23
        ５．３．９ WIN_PMA（絶対座標モード）............................. 23
    ５．４ VKEY（仮想キー・パッケージ）.................................. 24
        ５．４．１ VKEY_ENVR（アプリ環境ファイル読み込み）............... 25
        ５．４．２ VKEY_ENVW（アプリ環境ファイル書き込み）............... 25
        ５．４．３ VKEY_KY（仮想キーチェック）........................... 25
        ５．４．４ VKEY_SETTC（一時変更キー定義）........................ 25
        ５．４．５ VKEY_RESETTC（一時変更キー消去）...................... 26
    ５．５ MSEL（メニュー選択パッケージ）................................ 27
        ５．５．１ MSEL_INITM（初期化モジュール）........................ 28
        ５．５．２ MSEL_ENVR（アプリ環境ファイル読み込み）............... 28


                                   - i -

        ５．５．３ MSEL_ENVW（アプリ環境ファイル書き込み）............... 29
        ５．５．４ MSEL_M（メニュー選択）................................ 29
        ５．５．５ MSEL_BCMK（ボックス座標作成）......................... 29
        ５．５．６ MSEL_IN（メニュー選択入力）........................... 31
        ５．５．７ MSEL_BCCHK（各ボックスの指定座標内包チェック）........ 33
        ５．５．８ MSEL_CNFM（設定メニュー選択）......................... 34
        ５．５．９ MSEL_CNFSV（設定メニューの設定保存）.................. 36
        ５．５．１０ MSEL_CNFLD（設定メニューの設定復元）................ 36
        ５．５．１１ MSEL_BC（ボックスカーソル表示 / 消去）.............. 36
        ５．５．１２ MSEL_LC（ラインカーソル表示 / 消去）................ 37
    ５．６ INP（入力パッケージ）......................................... 38
        ５．６．１ INP_INITM（初期化モジュール）......................... 38
        ５．６．２ INP_ENVR（アプリ環境ファイル読み込み）................ 39
        ５．６．３ INP_ENVW（アプリ環境ファイル書き込み）................ 39
        ５．６．４ INP_STR（文字列入力）................................. 40
        ５．６．５ INP_GPRINT（文字列表示 (グラフィック座標指定)）....... 42
        ５．６．６ INP_FEPON（システム行表示）........................... 42
        ５．６．７ INP_FEPOFF（システム行非表示）........................ 43
        ５．６．８ INP_MVWAIT（入力待ち）................................ 43
    ５．７ MG（マルチグラフィックス・パッケージ）........................ 44
        ５．７．１ MG_INITM（初期化モジュール）.......................... 44
        ５．７．２ MG_ENVR（アプリ環境ファイル読み込み）................. 44
        ５．７．３ MG_ENVW（アプリ環境ファイル書き込み）................. 44
        ５．７．４ MG_LD（ＭＧ形式ファイル読み込み）..................... 45
        ５．７．５ MG_SETP（パレットデータ設定）......................... 45
        ５．７．６ MG_PUTG（画像データ表示）............................. 45
６ ウィンドウマネージャ・パッケージファイル（VIL_VWM.BAS）............... 46
    ６．１ VWM（ウィンドウマネージャ・パッケージ）....................... 46
        ６．１．１ VWM_INITM（初期化モジュール）......................... 50
        ６．１．２ VWM_ENVR（アプリ環境ファイル読み込み）................ 51
        ６．１．３ VWM_ENVW（アプリ環境ファイル書き込み）................ 52
        ６．１．４ VWM_PALSET（ウィンドウ枠・背景色パレット設定）........ 52
        ６．１．５ VWM_OP（ウィンドウ・オープン）........................ 53
        ６．１．６ VWM_CL（ウィンドウ・クロ−ズ）........................ 54
        ６．１．７ VWM_CLDMY（ウィンドウ・ダミークロ−ズ）............... 54
        ６．１．８ VWM_CLALL（ウィンドウ全クローズ）..................... 55
        ６．１．９ VWM_CLS（アクティブウィンドウ内クリア）............... 55
        ６．１．１０ VWM_CHECK（ウィンドウマネージャ呼出しチェック）..... 55
        ６．１．１１ VWM_WIN（スイッチ版ウィンドウマネージャ）........... 56
        ６．１．１２ VWM_MENU（メニュー版ウィンドウマネージャ）.......... 56
        ６．１．１３ VWM_INF（情報表示）................................. 56
        ６．１．１４ VWM_MOVE（移動・インタフェース）.................... 57
        ６．１．１５ VWM_KMOVE（移動・キー版インタフェース）............. 58
        ６．１．１６ VWM_MV（移動・移動処理）............................ 58
        ６．１．１７ VWM_CLOSE（クローズ）............................... 58
        ６．１．１８ VWM_HIDE（一時消去・インタフェース）................ 59
        ６．１．１９ VWM_KHIDE（一時消去・キー版インタフェース）......... 59
        ６．１．２０ VWM_HD0（一時消去・ウィンドウ一時退避処理）......... 60
        ６．１．２１ VWM_HD1（一時消去・ウィンドウ再表示処理）........... 60
        ６．１．２２ VWM_HD2（一時消去・再退避／ウィンドウ再表示）....... 60
        ６．１．２３ VWM_RESIZE（サイズ変更・インタフェース）............ 60
        ６．１．２４ VWM_KRESIZE（サイズ変更・キー版インタフェース）..... 61
        ６．１．２５ VWM_RS（サイズ変更実行）............................ 61
    ６．２ SBAR（スクロールバー・パッケージ）............................ 63
    ６．３ SEL（選択パッケージ）......................................... 64
        ６．３．１ SEL_INITM（初期化モジュール）......................... 64
        ６．３．２ SEL_ENVR（アプリ環境ファイル読み込み）................ 64
        ６．３．３ SEL_ENVW（アプリ環境ファイル書き込み）................ 64


                                   - ii -

        ６．３．４ SEL_OK（「確認」選択）................................ 64
        ６．３．５ SEL_YN（「はい」「いいえ」選択）...................... 65
        ６．３．６ SEL_DO（「実行」「取消」選択）........................ 65

























































                                  - iii -

