この章の目次にもどる
前頁:3.7 テキスト入力プリミティブにもどる
次頁:3.9 フォントマネージャにすすむ

3.8 実身/仮身マネージャ

3.8.1 実身/仮身マネージャの機能

3.8.1.1 概要

実身 / 仮身マネージャは、 外殻の 1 つとして「実身 / 仮身モデル」を実現する上での各種の高レベルの機能を提供しており、 アプリケーションプログラムは実身 / 仮身マネージャで提供される拡張システムコールを使用して容易に実身 / 仮身を表示 / 操作することが可能となる。

また、実身 / 仮身マネージャは、 アプリケーションプログラムの登録 / 削除機能を提供しており、 基本的に全てのアプリケーションプログラムは実身 / 仮身マネージャを通して起動されることになる。

実身 / 仮身マネージャの機能としては、以下のものがあげられる。

  1. 仮身の各種表示 / 操作機能
  2. 付箋の各種表示 / 操作機能
  3. アプリケーションプログラムの管理 ( 登録 / 削除 / 実行 ) 機能
  4. メニュー設定機能
  5. ファイルシステムの接続管理機能
  6. その他のアプリケーション機能

以下、この章ではHMI外部仕様としての実身 / 仮身マネージャを用いたアプリケーションによる、 実身 / 仮身の取扱いを記述しているが、 具体的な表示項目や表示のデザインなどの詳細についてはインプリメントに依存する。

3.8.1.2 仮身 / 実身 / 虚身

「実身」とは意味のあるデータの集まりそれ自体のことであり、 実際のファイルに一対一に対応するものである。 実身をユーザが操作するための手掛かりが「仮身」であり、 実身は常に仮身を通して参照される。 仮身は実身を参照するための一種のタグであり、 一つの実身を一つ以上の仮身が参照することができる。

仮身 / 実身 / 虚身
図 114 : 仮身 / 実身 / 虚身

実身自体は目で見える形で直接的に表示されることはなく、 その実身を参照する仮身として表示される。 仮身は 1 つのデータ単位として、 文字や図形等と同様に実身内の任意の位置に埋め込まれて表示される。

仮身には実身の管理情報のみを表示している「閉じた仮身」と、 管理情報と共に実身の内容も表示している「開いた仮身」がある。

仮身を「ウィンドウに開く」ことにより、 その仮身が指す実身に適用されるアプリケーションが実行されて、 実身の内容が表示される。 どのアプリケーションを実行するかを指定せずに仮身からウィンドウを開いた場合には、 その仮身に保持されているデフォールトアプリケーションが起動される。

仮身が格納されていた実身が存在するデバイスを、 仮身の「所属元デバイス」と呼び、 仮身が格納される実身が存在するデバイス、 即ち、仮身が表示されているウィンドウの元となった実身が存在するデバイスを仮身の「所属デバイス」と呼ぶ。 仮身の所属デバイスは、仮身を、 異なるデバイスに存在する実身を元にして開かれたウィンドウ間で移動することにより動的に変化する。

仮身の所属元デバイスと異なるデバイスもしくはその中の実身を参照する仮身、 即ちリンクファイルを参照している仮身を「間接参照仮身」と呼ぶ。 間接参照仮身と実身は疎な結合であるため、その参照は保証されない。

また、仮身の所属デバイスと異なるデバイスもしくはその中の実身を参照する仮身を「一時間接参照仮身」と呼ぶ。 一時間接参照仮身は格納することによりリンクファイルを参照する間接参照仮身となる。

デバイスには、そのデバイスが物理的または論理的に接続されておらず直接アクセスできない「切断状態」と接続されておりアクセス可能な「接続状態」の 2 つの状態があり、 初期状態は切断状態となる。

「切断状態」のデバイスもしくはその中の実身を参照する間接参照仮身を「虚身」と呼ぶ。 虚身を通常の仮身のようにウィンドウに開こうとした場合は、 「デバイス接続パネル」が現われ、 その虚身の参照する実身が最後に「接続状態」だった時点での所在等の管理情報を表示して、 接続状態にするか否かの判断を求める。 接続状態にすることにより虚身は通常の仮身と同様に操作できる。

一般の虚身は「閉じた虚身」であり開くことはできないが、 すでに開いている仮身が切断状態にされた場合は「開いた虚身」となる。

3.8.1.3 仮身の表示

仮身の表示

「閉じた仮身」は、横長の矩形枠で囲まれた図形として表示され、 参照する実身に関する情報が内部に表示される。

「開いた仮身」は、閉じた仮身の境界線が下に拡がり、 実身の内容自体を表示する表示エリアが追加されたものであり、 表示エリアは実身の内容が対応するアプリケーションにより表示される。

仮身の表示
図 115 : 仮身の表示

「選択状態」の場合、仮身の周囲に点線の枠をチラツキ表示させる。

仮身から開かれたウィンドウが存在している状態を「処理中状態」と呼び、 元の仮身の表示全体に灰色パターンが重ねられる。 「間接参照仮身」および「一時間接参照仮身」の場合、 仮身の枠の左上角が境界線色で塗りつぶされる。 この間接参照を示す表示は、 仮身を格納した場合間接参照仮身となることを示すものである。 よって「間接参照仮身」をその仮身が参照する実身のデバイスのウィンドウへ戻した場合は、 間接参照表示が解除される。

仮身の表示の大きさ、 デザイン等の詳細は実身 / 仮身マネージャのインプリメントに依存する。

タイトルバー

閉じた仮身、および開いた仮身の最上行には、 ピクトグラム、実身名、続柄、タイプ、変更日時の項目が表示される。 各項目は指定した文字サイズに対応した大きさの文字で表示され、 文字サイズに応じて全体の表示領域の大きさが決定される。

タイトルバー
図 116 : タイトルバー

実身名、続柄、タイプはそれぞれ仮身に付随する文字列であり、 実身名と続柄の間には、" : " が入り、タイプは " ( " と " ) " で括られる。

変更日時は、実身の内容を変更した最新の日時が表示される。 通常、変更日時は指定した文字サイズの縦横半分の大きさで表示される。

仮身の長さが短い場合は、右よりのものから見えなくなる。

通常、これらの表示項目はすべて表示するが、 仮身の属性として外枠も含めて表示しない項目を設定することが可能である。

虚身の場合は、 ピクトグラムを含めたタイトルバーの表示は灰色化表示となる。

虚身でない場合、参照する実身が実際には存在しない仮身は、 ピクトグラムの部分に斜線が引かれる。

タイトルバーの表示例
図 117 : タイトルバーの表示例
表示エリア

開いた仮身の場合のみ存在し、 仮身の内側の境界線で囲まれた領域であり、 参照する実身の内容が対応するアプリケーションにより表示される。

表示エリア内に表示されている仮身(内部仮身)の場合は、 仮身としての各種の操作ができないことを区別するために、 仮身全体を囲う境界線を細い点線で描く。

内容を表示するアプリケーションが存在しない場合、 またはアプリケーションが表示を行なえなかった場合は、 表示エリアに左上から右下への対角線が引かれ、 表示エリアの表示ができなかったことを示す。

同様に、開いた虚身の場合も内容の表示ができないため、 表示エリアに左上から右下への灰色の対角線が引かれる。 この場合、タイトルバーの表示は灰色化表示となっている。

すべての項目を表示しない属性の仮身の場合は、 開いた仮身のタイトルバー部分は表示されなくなる。 さらに外枠も表示しない属性の場合には、 表示エリアのみが表示され、 境界線を含めた外側は表示されない。

開いた虚身の表示
図 118 : 開いた虚身の表示
ハンドル

ハンドルは仮身の 4 隅に存在する領域であり、 ドラッグして仮身を変形するために使用される。 ユーザが仮身の長さを変える場合は、水平にドラッグして変形を行ない、 「開いた仮身」にする、または「閉じた仮身」に戻す場合は、 水平方向以外にドラッグして変形を行なう。

ハンドルには特に境界線はないが、 アプリケーションは仮身が選択状態のときは、 ポインタがその上に来ると「変形手」に変化させ、 ドラッグにより変形できることを示す。

ハンドルによる変形は、 ドラッグしたハンドルと対角位置の点により決定される矩形領域となるが、 仮身の最小長さ、および最小高さより小さくなるような変形はできない。 仮身の最小高さは閉じた仮身の高さであり、 最小長さは実身 / 仮身マネージャのインプリメントに依存する。 また、開いた仮身の最小高さもインプリメントに依存し、 これよりも小さい高さの開いた仮身とすることはできない。

仮身内でのハンドルの位置
図 119 : 仮身内でのハンドルの位置
ハンドルによる変形
図 120 : ハンドルによる変形
境界線

仮身は、境界線により囲まれているが、 表示エリア内に表示されている仮身 ( 内部仮身 ) は、 仮身としての操作ができないことを示すため、 境界線を細い点線とする。

境界線の四隅はハンドルの一部としてドラッグして変形するための手掛かりとなる。

仮身の境界線の内部は、 ハンドルの部分を除いてドラッグして移動するための手掛かりとなり、 アプリケーションは仮身が選択状態のときはポインタがその上にくると「移動手」とする。

3.8.1.4 仮身の操作

仮身の操作

仮身に対する操作としては、以下のものがあげられる。 これらの操作は、ポインティングデバイスにより画面上で直接的に指示される場合と、 oget_men() または oget_vmn() によって得られる「仮身 ( / 実身 / ディスク ) 操作」メニューにより指示される場合がある。

    メニュー項目
(1)仮身の選択 ----
(2)仮身の切断 切り離し
(3)仮身の移動 / 複写 ----
(4)仮身の変形 ----
(5)仮身を開く 開く
(6)仮身を閉じる 閉じる
(7)実身名の変更 実身名変更
(8)続柄の変更 続柄変更
(9)新版作成 新版作成(または実身複製)
(10)実身管理情報の表示 管理情報
(11)仮身をウィンドウに開く (実行メニュー)
(12)デバイスの再フォーマット フォーマット
(13)仮身の属性の変更 属性変更
(14)アプリケーションの登録 / 削除アプリ登録 / 削除
(15)トレーからのデータ貼り込み トレーから書込み
(16)仮身の接続 接続
(17)ディスク状態の表示 状態表示
(18)ディスク整理の実行 ----
(19)ユーティリティの実行 (ユーティリティ名)

なお、開いた仮身の表示エリアに表示されている仮身 ( 内部仮身 ) に対しては、 上記の仮身操作は一切できない。

以下は、仮身に関するアプリケーションの標準的な操作方法の説明であり、 実身 / 仮身マネージャでは、これらの操作を行なうための基本的な機能を提供している。 実際の操作に伴う処理の細部はアプリケーションのインプリメントによって異なる場合がある。

仮身の選択
仮身の切断

3.8.2 仮身の移動 / 複写

仮身の変形
仮身を開く

仮身は、変形により開くことができるが、変形以外にもメニュー指定により開くことができる。

仮身を閉じる

仮身は、変形により閉じることができるが、 変形以外にもメニュー指定により閉じることができる。

実身名の変更
続柄の変更
新版作成

仮身の複写では同一の実身を参照する仮身が複写されるだけであり、 実身は複写されないため、「新版作成」により実身を複写する。

新版作成
図 121 : 新版作成
実身管理情報の表示

「管理情報ウィンドウ」には、以下に示すような情報が表示され、 一部の変更が可能となる(詳細はインプリメントに依存する)。

  変更の可否
実身情報 :
  実身名
 続柄
 所属デバイス名
 デバイス所在
 実身サイズ
 実身合計サイズ
 作成日時
 変更日時
 参照する仮身数
 含む仮身数
使用者管理 :
 所有者名
 所属グループ名
 所有者アクセスモード
 所属(グループ)アクセスレベル
 一般アクセスレベル
 合言葉
 書込不可属性
 削除不可属性
付箋指定 :
 データタイプ
 適用機能付箋一覧
 デフォールトアプリ
 デフォールトアプリ固定/最新
仮身をウィンドウに開く
デバイスの再フォーマット
仮身の属性の変更
アプリケーションの登録 / 削除
トレーからのデータ貼り込み
仮身の接続
ディスク状態の表示
ディスク整理の実行
ユーティリティの実行

3.8.2.1 付箋

付箋の種類

付箋は大きく以下に示す種類がある。

機能付箋 :
アプリケーションプログラム起動用(アプリケーションプログラムファイル側で保持する)
実行機能付箋 :
アプリケーションプログラム起動用(起動対象実身側で保持する)
小物付箋 :
小物アプリケーションプログラム起動用
設定付箋 :
システムの設定変更用
指定付箋 :
アプリケーションデータ指定用

指定付箋以外は、 いずれもアプリケーションプログラムを直接参照し、 付箋の処理のために基本的に対応するアプリケーションプログラムの起動を必要とする。

実身 / 仮身マネージャでは、 指定付箋以外の付箋に関する表示 / 操作 / 実行処理のための各種の関数を提供している。

付箋の表示

付箋は仮身とほぼ同様に表示されるが、続柄、および変更日時は定義されない。 また、ピクトグラムは、通常付箋を示す共通シンボルであるが、 付箋独自のピクトグラムとする場合もある。

付箋の表示
図 122 : 付箋の表示
付箋の操作

付箋に対する操作としては、以下のものがあげられる。 これらの操作は、ポインティングデバイスにより画面上で直接的に指示される場合と、 oget_men() または oget_vmn() によって得られる「付箋操作」メニューにより指示される場合がある。

  メニュー項目
(1)付箋の選択 ----
(2)付箋の移動 / 複写----
(3)付箋の変形 ----
(4)付箋名の変更 付箋名変更
(5)付箋の属性の変更 属性変更
(6)付箋の実行 起動

以下は、アプリケーションの付箋に関する標準的な操作方法の説明であり、 実身 / f仮身マネージャでは、 これらの操作を行なうための基本的な機能を提供している。 実際の操作に伴う処理の細部はアプリケーションのインプリメントによって異なる場合がある。

付箋の選択 :
仮身の場合と同様。
付箋の移動 / 複写 :
仮身の場合と同様。
付箋名の変更 :
仮身の場合の「実身名の変更」と同様。
付箋の変形 :
仮身の場合と同様であるが、縦に変形することはできない。
付箋の属性の変更 :
仮身の場合の「属性の変更」と同様であるが、以下のような項目となる。
表示項目
付箋名、データタイプ、それぞれの表示の有無
表示色
枠、タイトル文字、タイトル背景、それぞれの表示色
文字サイズ
文字の大きさ
その他
自動起動などの指定
付箋の実行 :
仮身の場合の「ウィンドウに開く」と同様であり、 oexe_apg() によって付箋の参照するアプリケーションが起動される。 通常はアプリケーションによりセッティングパネルが表示されることが多い。

3.8.3 実身 / 仮身マネージャの詳細

3.8.3.1 仮身

仮身の分類

仮身は、 内部的にはファイル管理で定義されている「リンク」により表現され、 その取り扱い上、以下のように分類される。

今後、単に仮身という場合は通常仮身を示すものとする。

実身 / 仮身マネージャでは仮身を、 指定したウィンドウ / パネル上に存在する一種のパーツとして登録し、 登録した仮身に対して仮身ID ( vid > 0 ) を割り当てて管理する。 アプリケーションは登録時に得られる仮身IDを使用して、 仮身の表示 / 操作を行なうことになる。 ただし、内部仮身のサポートのため、仮身を登録せずに直接表示する機能も提供している。

仮身のデータ構造

仮身は、内部的に以下に示す仮身リンク構造体により表現される。 このデータ構造体は、ファイル管理で使用している LINK 構造体と同一であるが、 フィールドの定義が異なっている。

    typedef struct {
        TC  fs_name[20];    /* ファイルシステム名 */
        UH  f_id;           /* ファイルID */
        UH  attr;           /* 仮身タイプ/属性 */
        UH  rel;            /* 続柄インデックス */
        UH  appl[3];        /* アプリケーション ID */
    } VLINK;

fs_namef_id は仮身の対象とするファイルを示すもので、 核のファイル管理レベルで使用され、 それ以外のデータはファイル管理レベルでは使用しないデータであり、 仮身固有のデータとして以下のように定義される。

attr :

仮身属性 / 状態を示す以下の内容のものである。

仮身の属性 / 状態
図 123 : 仮身の属性 / 状態

appl :

仮身にデフォールトとして適用されるアプリケーションプログラムのアプリケーション ID を示す 3 つのハーフワード ( 16 ビット ) の配列である。

アプリケーション ID は全てのアプリケーションプログラムに対して付けられたユニークな ID であり、 最初の 2 つが適用するデータタイプを示し、 3 つ目は同一データタイプに適用されるアプリケーションを区別するための識別番号となる。

データタイプ ( 最初の 2 つ ) が 0 のときは、 参照する実身(ファイル)内に存在する先頭の実行機能付箋がデフォールトアプリケーションであると見なされる。

ただし、3 つ目の 0x4000 に対応するビットが "1" の場合は、 そのアプリケーションはデフォールトアプリケーションとなることはできない。

rel :

仮身の続柄インデックスであり、 仮身の所属デバイスに含まれている続柄ファイル内のインデックスを示す。 この続柄インデックスにより、 続柄名の表示、および仮身内での続柄名の表示カラーが定義される。

仮身セグメント

仮身自体は VLINK 構造体により表わされるが、 仮身を実際に実行したり表示するために VLINK 構造体と対になる「仮身セグメント」が必要となる。

仮身セグメントは以下に示すデータ構造を持つ。

    typedef struct {
        RECT    view;       /* 表示領域 */
        H       height;     /* 開いた場合の高さ */
        CHSIZE  chsz;       /* 文字サイズ */
        COLOR   frcol;      /* 枠の色 */
        COLOR   chcol;      /* 文字色 */
        COLOR   tbcol;      /* タイトル背景色 */
        COLOR   bgcol;      /* 開いた場合の背景色 */
        UH      dlen;       /* 固有データのバイト長 */
                            /* dlen バイトの固有データが続く */
    } VOBJSEG;
view :

仮身の実際の表示領域をウィンドウ / パネルの相対座標で示す。

chsz :

仮身の文字サイズを示す以下の値。

            UUSS SSSS SSSS SSSS
U :
単位指定
0:
ピクセル単位
1:
1/20 級(1/80 mm)単位
2:
1/20 ポイント(1/1440 inch)単位
3:
予約

S :
U で指定された単位での文字サイズ指定。 0 の場合は、実身 / 仮身マネージャで規定するデフォールト文字サイズを意味する。

height :

仮身を開いた場合のデフォールトの仮身の高さをウィンドウ / パネルの座標系で示す。 < 0 の場合は、 その仮身は開けないことを示す。 また 0 の場合は実身 / 仮身マネージャで規定するデフォールトの大きさで開くことを示す。

frcol :

仮身枠の色を示す。

chcol :

仮身のタイトルバーの文字色を示す。

tbcol:

仮身のタイトルバーの背景色を示す。

bgcol:

開いた仮身の表示エリアの背景色を示す。

dlen:

デフォールトアプリケーションで使用する固有データのバイト数を示す。 このバイト数のデータが直後に続くことになる。 固有データは、 デフォールトアプリケーションの機能付箋に含まれているものと同一のデータ構造の内容を持ち、 デフォールトアプリケーションを起動して仮身をウィンドウに開いた場合にアプリケーションに渡されるデータである。

仮身セグメントは、 固有データを含んだ 1 つのデータ構造であり、 VLINK 構造体と対になり仮身を定義するために使用される。

続柄

続柄は仮身に対して任意に付けることのできる一種の属性としての名前 ( 最大 16 文字 ) である。

続柄はファイルシステム ( デバイス ) 単位で定義され、 仮身の参照する実身 ( 間接参照仮身の場合はリンクファイル ) の存在するファイルシステムのルートファイル直下に存在する「続柄管理ファイル」に以下のデータが保持され、 そのインデックス ( 0 〜 ) が仮身のデータとして格納される。 通常、インデックス 0 は続柄名なし ( 全て 0 ) となっている。

    typedef struct {
        TC     name[16];   /* 続柄名 */
        COLOR  col;        /* 続柄名の色 */
    } VOBJREL;

「続柄管理ファイル」の内容は、 仮身操作の「続柄変更パネル」により登録 / 削除することが可能である。

続柄はファイルシステム単位で定義されているため、 仮身を移動 / 複写した後、異なるファイルシステム内へ保存する場合、 同一の続柄名とするために、 続柄インデックスの変換、 および続柄名の新規登録を行なう必要があり、 このための関数 ocnv_vob() が用意されている。 この場合、「続柄管理ファイル」への新規登録のみが行なわれ 、 削除は一切行なわれない。 つまり、登録した続柄名の削除は仮身操作の「続柄変更パネル」によってのみ行なうことが可能となる。

実身のタイプ

実身の基本データタイプは、 ファイルのアプリケーションタイプ ( atype ) として定義される。 ファイルのアプリケーションタイプはファイルの生成時に指定するファイル管理レベルでは使用されないデータであり、 以下の内容を持つ。

実身のアプリケーションタイプ
図 124 : 実身のアプリケーションタイプ

ピクトグラムデータ番号は、 データボックスに定義されている "PICT_DATA" タイプのデータ番号であり、 対応する仮身やウィンドウのピクトグラムとして使用される。

上位バイトは、そのファイルの属性を示し、 実身 / 仮身マネージャで使用される。 特に実身のタイプが「実行可能ファイル」タイプでないものはアプリケーションプログラムとしての登録は不可となる。

3.8.3.2 付箋

付箋の取り扱い

実身 / 仮身マネージャでは付箋についても、 仮身と同様に登録を行ない、 登録した付箋に対しての各種の操作を提供する。 すなわち、付箋は特殊な仮身として取り扱われ、 登録時に得られる ID も仮身 ID として取り扱われる。

実身 / 仮身マネージャとして提供される関数の多くは、 仮身と付箋の両方に対して適用可能であり、 このためアプリケーションは仮身と付箋の区別をせずに済むようになっている。

付箋のデータ構造

付箋は以下に示す共通的なデータ構造のヘッダを持ち、 その直後にアプリケーションの固有データが続いて入ることになる。

    typedef struct {
        RECT    view;       /* 表示領域 */
        CHSIZE  chsz;       /* 文字サイズ */
        UH      frcol[2];   /* 枠の色 */
        UH      chcol[2];   /* 文字色 */
        UH      tbcol[2];   /* タイトル背景色 */
        UH      pict;       /* ピクトグラム/タイプ */
        UH      appl[3];    /* アプリケーションID */
        TC      name[16];   /* 付箋名 */
        TC      dtype[16];  /* データタイプ名 */
        UH      dlen;       /* 固有データのバイト長 */
                            /* dlen バイトの固有データが続く */
    } FUSENSEG;
view :

付箋の実際の表示領域をウィンドウ / パネルの相対座標で示す。

chsz :

付箋の文字サイズを示す。仮身の文字サイズと同じデータ形式となる。

frcol :

付箋枠の色を示す。

chcol :

付箋のタイトルバーの文字色を示す。

tbcol :

付箋のタイトルバーの背景色を示す。

pict :

付箋表示の場合に使用されるピクトグラムのデータ番号が下位バイトに入る。 0 は標準の付箋用ピクトグラムを意味する。 上位バイトは付箋の属性を示す。

        HAxD NTxx PPPP PPPP
P  ピクトグラムのデータ番号
H = 1隠蔽付箋 ( 隠蔽仮身と同様に実身 / 仮身マネージャでは無視する )
A = 1自動起動
D = 1虚身 ( 灰色化 ) 表示
N = 1付箋名表示なし
T = 1データタイプ名表示なし
x 予約
name :

付箋名を示す。

dtype :

データタイプ名を示す。

appl :

付箋が参照するアプリケーションプログラムのアプリケーション ID を示す。

dlen :

続く固有データのバイト数を示す。

付箋は、実身内の1つの独立したレコードとして格納され、 レコードタイプは、「実行機能付箋タイプ」または「機能付箋タイプ」となる。 サブタイプは特に使用しない。 「実行機能付箋タイプ」の場合は、 その実身に適用可能なアプリケーションプログラムを意味し、 実行メニューとしてその付箋名が表示されることになる。

さらに実行機能付箋のテンプレートとなる付箋がアプリケーションプログラムファイル内の 1 つの独立したレコードとして格納され、 レコードタイプは、 「機能付箋タイプ」となる。サブタイプは特に使用しない。

仮身のデフォールトアプリケーションに対応する付箋の固有データは仮身セグメントの中に含まれることになる。

3.8.3.3 アプリケーションプログラム管理

実行環境ファイル

ユーザの処理の実行環境となっているファイルを「実行環境ファイル」と呼ぶ。

実行環境ファイルはシステム全体で唯一のものとして定義され、 システム立ち上げ時に最初にウィンドウを開くプロセスは、 必ず実行環境ファイルを設定しなければならない。 また、以降のプロセスは ochg_env() によって実行時にネスティングして変更することができる。 変更した実行環境ファイルは、 スタック状に保持されるため、 元の実行環境ファイルに戻ることが可能である。

実行環境ファイルの存在するデバイス ( ファイルシステム ) は、 アプリケーションプログラムの検索の対象となる点で重要であり、 また、フロッピーディスク等のデバイスを挿入した場合、 自動的にその時点の実行環境ファイル上に対応するデバイス仮身が生成されることになる。

実行環境ファイルは、 そのファイルを開いているウィンドウと対となって定義され、 そのウィンドウを実行環境ウィンドウと呼ぶ。

アプリケーションプログラムの登録

アプリケーションプログラムは登録することにより、 初めて実行可能となる。 登録は、デバイス ( ファイルシステム ) 単位で行なわれ、 通常、そのファイルシステム内に存在する全てのアプリケーションプログラムは登録されることになる。

アプリケーションプログラムの登録は、 oreg_apg() により、 そのアプリケーションへのリンクが存在するファイルシステム内のルートファイルの直下に存在する「アプリケーション登録ファイル」に、 アプリケーションプログラムのファイルへのリンクを格納することにより行なわれ、 同時にアプリケーションのデータタイプ名も格納される。 なお、この登録ファイルは通常は仮身として表示されない。

登録するアプリケーションプログラムの所在には、 特に制限がなく、別デバイスに存在していてもよい。

アプリケーションプログラムは、3 つのハーフワードのユニークな「アプリケーション ID」を持ち、 この ID により識別される。 アプリケーション ID の最初の 2 つは適用するデータタイプを示し、 最後の 1 つは同一データタイプに適用されるアプリケーションを区別するための識別番号となる。

同一のアプリケーション ID を持つ異なるファイルのアプリケーションプログラムを複数個登録することも可能である。

アプリケーションプログラムの検索

アプリケーションプログラムは対応する付箋を元に実行される。 付箋にはアプリケーション ID が入っており、 これを元に登録済みのアプリケーションプログラムが検索されて実行される。

アプリケーションプログラムの検索は、 その時点の実行環境ファイルが属するデバイス ( ファイルシステム ) に登録されているアプリケーションプログラムに対して行なわれ、 さらに検索対象デバイス ( ファイルシステム )が oset_sea() によって設定してあった場合には、 設定してある検索対象デバイスに対しても検索される。

なお、oprc_dev(), oatt_vob() によって接続されたデバイスが、 自動的に検索対象デバイスとして設定されるかどうかはインプリメントに依存する。

デフォールトでは、 検索対象デバイスは設定されていないため、 実行環境のデバイスのみが検索対象となる。

対応するアプリケーションプログラムが複数個登録してあった場合は、 最新の更新日時のアプリケーションを自動的に選択するか、 「アプリケーション選択パネル」を表示してアプリケーションを選択させるかは、 インプリメントに依存する。 このような状況はアプリケーションのバージョンアップ時に古いバージョンと新しいバージョンの両方が登録された場合に発生することになる。

なお、異なるアプリケーションであることは、 ファイルの総バイト数、総レコード数、ファイル名のいずれかが異なっていることで判断され、 これらがすべて同一である場合は、 同一のアプリケーションとみなされ、 最初に検索されたアプリケーションのみが有効となる。

アプリケーションプログラムのファイル構成

アプリケーションプログラムファイルのアプリケーションタイプは実行可能ファイルでなくてはいけない。 また、以下に示すレコード構成でなくてはいけない。 実行プログラムレコードは先頭レコードでなくてはいけないが、 他のレコードの順番は任意である。

<実行プログラムレコード> 1 個

標準オブジェクト形式の内容

<機能付箋レコード> 1 〜 N 個

登録時にアプリケーション ID、およびデータタイプ名を取り出すために使用される。 この機能付箋は、 アプリケーションプログラムに対する付箋のテンプレートとしても使用されるため、 固有データ部分はデフォールトとしての標準値となる。

<その他の任意のレコード> 0 〜 M 個

アプリケーション自体で解釈 / 使用する。

3.8.3.4 アプリケーションプログラムの起動

起動方法

登録されたアプリケーションプログラムに対しては、以下の 4 種類の起動が行なわれる。

(1) 仮身のオープン起動 :

指定された仮身に対してウィンドウを開いてアプリケーション本来の機能を実行する。 実行メニュー、小物メニューまたはピクトグラム ( または、仮身の任意の箇所 ) のダブルクリックにより起動される。

(2) 開いた仮身の表示起動 :

指定された開いた仮身の表示エリア内の表示を行ない、 表示完了後に終了する。開いた仮身の表示要求により起動される。

(3) データ貼り込み起動 :

指定された仮身の参照する実身にトレーに格納されているデータを貼り込み、 貼り込み完了後に終了する。仮身への貼り込み操作で起動される。

(4) 付箋のオープン起動 :

指定された付箋に対して対応するアプリケーションを起動する。 付箋のピクトグラム ( または、付箋の任意の箇所 ) のダブルクリック、 付箋操作メニューにより起動される。

(5) 開いた仮身のTADデータ作成起動 :

指定された開いた仮身の表示エリア内の表示に相当する TAD データを作成し、 データ作成完了後に終了する。

起動時には、各起動タイプに応じた起動メッセージが、 起動したプロセスに対して送られるため、 アプリケーションは要求された処理を起動メッセージ内のパラメータに従って行なう必要がある。

仮身のオープン起動

仮身のオープン起動では、起動したプロセスに対して、 以下の起動メッセージが渡されるので、 起動されたプロセスは起動メッセージに従って、 対象実身 ( ファイル ) に対してアプリケーションとしての処理を行なうことになる。

    typedef struct {
        W       type;       /* = EXECREQ (= 0x10) */
        W       size;       /* メッセージ本体サイズ */
        LINK    self;       /* 起動ファイル */
        LINK    lnk;        /* 対象ファイル */
        W       vid;        /* 対象仮身 ID */
        W       pwid;       /* 親ウィンドウ ID */
        W       info;       /* レコード番号/付箋データポインタ */
        RECT    r;          /* 生成元 */
        COLOR   bgcol;      /* 元の仮身の背景色 */
        W       mode;       /* 起動モード */
    } M_EXECREQ;

size はメッセージ本体のバイトサイズであり、 メッセージ全体のバイトサイズ - sizeof(W) * 2 の値となる。

self は、起動されたアプリケーションプログラム自体のリンクとなる。 LINK 構造体の atr3 〜 atr5 には、 起動の対象となったアプリケーション ID がセットされている。

lnk は、起動の対象となった仮身の参照する実身へのリンクとなる。 小物アプリケーションの場合は、 「小物入れ」ファイルへのリンクとなる。

vidは、 仮身のオープン起動の場合、 対象仮身 ( 生成元の仮身 ) の仮身 ID であり、 小物アプリケーションの起動の場合、 実身 / 仮身マネージャで内部的に管理している ID (対応する小物メニューの項目番号と 0x4000との OR をとったもの ) が格納される。 初期起動のときは、vid = 0 となる。

pwid は、起動の対象となった仮身が登録されているウィンドウ ID であり、 小物アプリケーションの場合は 0 となる。

info は、実身 / 仮身マネージャで管理している付箋の固有データへのポインタ、 または対応する実行機能付箋のレコード番号となり、 前者の場合は、info で指定されたポインタから固有データを取り出し、 後者の場合は、起動対象となった実行機能付箋内の固有データ部分を oget_fsn() を使用して取り出すことになる。 小物アプリケーションの場合、 「小物入れ」ファイル内の対応する機能付箋のレコード番号となり、 対応する機能付箋の固有データ部分を oget_fsn() を使用して取り出すことになる。

info は、 付箋全体へのポインタではなく、 固有データ部分のみの以下に示す構造体へのポインタである。

info ------->UH dlen -- 固有データのバイトサイズ
UB dat[dlen]-- 固有データ

通常、アプリケーションは、 起動時に適用された実行機能付箋の固有データを必要に応じて終了前に oput_fsn() を使用して自分で更新し、 さらに更新した固有データを実身 / 仮身マネージャに終了通知として渡す必要がある。 ただし、起動時に指定された固有データを使用するか否か、 および終了時に更新するか否かの最終判断はアプリケーションに依存する。

r は、起動の対象となった仮身の表示領域を示し、 pwid で示されるウィンドウの相対座標で表される。

bgcol は、 起動の対象となった仮身の表示エリアの背景色を示し、 通常、ウィンドウの背景色に使用される。

mode は、起動のモードを示す以下の値である。

    xxxx xxxx xxxx xxxx Ixxx xxxx xxxx xxTR
R= 0: info は実身 / 仮身マネージャで管理している 付箋の固有データへのポインタとなる (デフォールトアプリケーションの起動時)
= 1: info は対象ファイル内の実行機能付箋レコードのレコード番号 (実行メニューによるデフォールトアプリケーションでないアプリケーションの起動時)
T= 0: 仮身オープン起動
= 1: 小物アプリケーション起動
I= 0: 通常起動
= 1: 初期起動 (初期ユーザプロセスの起動)
x : 予約

この起動は、実身 / 仮身マネージャの oexe_apg() 関数による起動であり、 起動されたプロセスは、 ウィンドウを開いた後、必ず、osta_prc() により処理の開始を通知し、 実身を更新した後、ウィンドウを閉じる前に、 必ず、oend_prc() により処理の終了を通知しなくてはいけない。 oend_prc() を実行した場合は、開いた仮身の表示要求が戻る場合があるため、 その場合は、得られた描画環境 ID に対して開いた仮身の表示起動と同様の処理を行なう必要がある。

ウィンドウやパネルを開かないアプリケーションの場合は、 osta_prc() を実行する必要はないが、 oend_prc() は必ず実行しなくてはならない。 また、何らかのエラーが発生し、 osta_prc() を実行しなかった場合でも、 oend_prc() は必ず実行しなくてはならない。

開いた仮身の表示起動

開いた仮身の表示起動では、 起動したプロセスに対して、 以下の起動メッセージが渡されるので、 起動されたプロセスは起動メッセージに従って、 開いた仮身の表示エリアの表示を行なうことになる。

    typedef struct {
        W       type;       /* = DISPREQ (= 0x11) */
        W       size;       /* メッセージ本体サイズ */
        LINK    self;       /* 起動ファイル */
        LINK    lnk;        /* 対象ファイル */
        W       vid;        /* 対象仮身 ID */
        W       pwid;       /* 親ウィンドウ ID */
        W       info;       /* 付箋データポインタ */
        COLOR   bgcol;      /* 元の仮身の背景色 */
        W       gid;        /* 描画環境 ID */
    } M_DISPREQ;

info は、実身 / 仮身マネージャで管理している付箋の固有データへのポインタであり、 仮身のオープン起動の場合と同じであるが、処理終了後に固有データを更新する必要はない。

アプリケーションは開いた仮身の表示エリアの表示を、 gid で指定された描画環境に対して行なう。 表示エリアはフレーム長方形として設定されている。 通常、この描画環境はメモリ描画環境となっており、 gid に対する内部ウィンドウをオープンして表示を行うことになる。

この起動は、実身 / 仮身マネージャに対する仮身の表示要求によって間接的に発生する起動であり、 起動されたプロセスは、表示を行なった後、 必ず、oend_req() により、処理の正常終了、 または異常終了を通知しなくてはいけない。 このときは描画環境をクローズする必要はない。 通常はその後、プロセスを終了 (ext_prc()) することになる。

データ貼り込み起動

データ貼り込み起動では、起動したプロセスに対して、 以下の起動メッセージが渡されるので、 起動されたプロセスは起動メッセージに従って、 トレーに格納されたデータの対象実身 ( ファイル ) への貼り込み処理を行なうことになる。

    typedef struct {
        W       type;       /* = PASTEREQ (= 0x12) */
        W       size;       /* メッセージ本体サイズ */
        LINK    self;       /* 起動ファイル */
        LINK    lnk;        /* 対象ファイル */
        W       vid;        /* 対象仮身 ID */
        W       pwid;       /* 親ウィンドウ ID */
        W       info;       /* 付箋データポインタ */
    } M_PASTEREQ;

この起動は、実身 / 仮身マネージャの oput_dat() 関数による仮身へのデータ貼り込み要求により発生する起動であり、 起動されたプロセスは、貼り込み処理を行なった後、必ず、oend_req() により、 処理の正常終了、 または異常終了を通知しなくてはいけない。 通常はその後、プロセスを終了 ( ext_prc() ) することになる。

付箋のオープン起動

付箋のオープン起動では、起動したプロセスに対して、 以下の起動メッセージが渡されるので、 起動されたプロセスは起動メッセージに従ってアプリケーションとしての処理を行なうことになる。

    typedef struct {
        W       type;   /* = FUSENREQ (= 0x13) */
        W       size;   /* メッセージ本体サイズ */
        LINK    self;   /* 起動ファイル */
        W       vid;    /* 対象付箋 ID */
        W       pwid;   /* 親ウィンドウ ID */
        W       info;   /* 付箋データポインタ */
        RECT    r;      /* 生成元 */
    } M_FUSENREQ;

各データの内容は、 仮身のオープン起動と同様となる。特に info は、 実身 / 仮身マネージャで管理している付箋の固有データへのポインタであり、 付箋全体のポインタではない。

この起動は、実身 / 仮身マネージャの oexe_apg() 関数による起動であり、 起動されたプロセスは、 付箋の固有データを更新した場合は、必ず、 oend_prc() により付箋データの更新を通知しなくてはならない。

一般に、付箋のオープン起動により起動されたアプリケーションは、 必要に応じて起動元のアプリケーションに対して oreq_prc() により要求を行なう。 この要求は、 仮身要求イベントとして付箋のオープン起動を行なったアプリケーションに渡されるので、 起動元のアプリケーションは、 orsp_prc() によりその応答を戻す必要がある。

以下に、付箋のオープン起動で起動されたアプリケーションの典型的な動作例 (例えば、印刷アプリケーションプログラム)を示す。

  1. 起動時に得られた付箋セグメントの内容に従って、 セッティングパネルを開き、 ユーザからの各種のパラメータの設定を受け付ける。

  2. パラメータの設定が行なわれた場合は、 oend_prc() により、 付箋固有データの更新を行なう。

  3. 「実行」を要求された場合は、 oreq_prc() により、 起動元のプロセスに対して、 現在の編集結果を一時ファイルとすることを要求する。 この応答により得られた一時ファイルを対象として「実行」としての機能を実施する。 通常は、応答が得られた時点でパネルをクローズするが、プロセスはまだ終了しない。

  4. 「実行」が要求されなかった場合は、 パネルをクローズしプロセスを終了する。

開いた仮身の TAD データ作成起動

指定された開いた仮身の表示エリア内の表示に相当する TAD データを作成し、 データ作成完了後に終了する。

開いた仮身の TAD データ作成起動では、 起動したプロセスに対して、 以下の起動メッセージが渡されるので、 起動されたプロセスは起動メッセージにしたがって、 開いた仮身の表示エリアの表示に相当する TAD データを作成し、 保存先ファイルに格納する。

    <開いた仮身の TAD データ作成起動メッセージ>

    typedef struct {
        W       type;   /* = TADREQ (= 0x14) */
        W       size;   /* メッセージ本体サイズ */
        LINK    self;   /* 起動ファイル */
        LINK    lnk;    /* 対象ファイル */
        W       vid;    /* 対象仮身 ID */
        W       pwid;   /* 親ウィンドウ ID */
        W       info;   /* 付箋データポインタ */
        COLOR   bgcol;  /* 元の仮身の背景色 */
        LINK    save;   /* TADの保存先ファイル */
        RECT    r;      /* 表示領域 */
    } M_TADREQ;

この起動は、実身 / 仮身マネージャに対する仮身の TAD データ作成要求によって間接的に発生する起動であり、 起動されたプロセスは、データの作成を行った後、 必ず、oend_req() により、 処理の正常終了、または異常終了を通知しなくてはいけない。 このときには保存先ファイルをクローズしておかなくてはならない。 通常はその後、プロセスを終了 ( ext_prc() ) することになる。

r は開いた仮身の表示領域を表わしている ( lefttop の座標は 0, 0 ) 。

3.8.3.5 メニュー管理

実身 / 仮身マネージャでは、 以下に示す共通メニューに対するメニュー項目リストの生成、更新の機能を提供している。

実行メニュー :

指定した仮身が対象とする実身に対して適用可能な付箋名のメニュー。 実身に含まれるすべての実行機能付箋レコードの付箋名を順番に並べたメニューであり、 実身ファイルの更新が通知された場合は、対応する実行メニューも更新される。

小物メニュー :

現在実行可能な小物アプリケーションの付箋名のメニュー。

「小物入れ」ファイルと呼ばれる特定のファイル群に含まれるすべての機能付箋レコードの付箋名を順番に並べたメニューであり、 これらのファイルの更新が通知された場合は、 小物メニューも更新される。

「小物入れ」ファイルには oset_tmf() によって任意のファイルを指定することができる。

インプリメントによっては、 指定したファイルと別デバイスのルートファイル直下の同一名称のファイルも自動的に「小物入れ」ファイルとみなす場合もあり、 その場合は、 小物メニューの内容はデバイスの接続 / 切断に伴って自動的に変化することになる。

仮身操作メニュー :

指定した仮身に対する操作をまとめたメニュー。 基本的に固定的メニューであるが、仮身のタイプにより一部異なる。 仮身操作メニューは、仮身操作、実身操作、 ディスク操作の 3 つのメニューに分割して取り出すこともできる。

付箋操作メニュー :

指定した付箋に対する操作をまとめたメニュー。 固定的メニューである。

さらに、上記の各種メニュー項目が選択された場合の、 選択番号をパラメータとした処理機能も提供されているため、 アプリケーションはメニューの内容に無関係に統一的な処理が可能となる。

仮身要求イベント

仮身の操作に伴って、 操作の対象となった仮身以外の仮身の表示の更新が必要な場合がある。 この場合は、勝手に他のウィンドウの仮身の表示を更新することはできないため、 「仮身要求イベント」として、 仮身の再表示を要求するイベントが仮身が登録されたウィンドウの管理プロセスに対して送信される。

仮身要求イベントはウィンドウイベントの EV_REQUEST の 1 つであり、 以下の内容となる。このイベントを受信したアプリケーションは速やかにその処理を行なわなくてはいけない。 なお、これらのイベントに対しての応答は一部を除いて必要ない。

    wevent.g.type = EV_REQUEST
.g.data[0]0
.g.data[1]0
.g.data[2]要求タイプ
.g.data[3]対象仮身 ID ( vid )
.g.cmd 仮身要求イベント( = W_VOBJREQ )
.g.wid 対象のウィンドウ ID
.g.src ソース PID
要求タイプ = 0 : 名称 / 続柄等が変更された
1 : 処理中状態になった
2 : 処理中状態が解除された
3 : 虚身状態になった
4 : 虚身状態が解除された
5 : 虚身ウィンドウになった
6 : 虚身ウィンドウが解除された
7〜14: 予約
15 : 仮身 / 付箋の変更通知
16 : 仮身の挿入要求 ( ファイルシステム接続 )
17 : 仮身の挿入要求 ( 新規実身への保存 )
128 : 編集内容の一時ファイルへの格納要求

3.8.4 データ / 定数の定義

□ 仮身ID

typedef W   VID;        /* 仮身 ID */

□ アプリケーション起動メッセージ

#define EXECREQ     0x10
#define DISPREQ     0x11
#define PASTEREQ    0x12
#define FUSENREQ    0x13
#define TADREQ      0x14

□ 仮身のオープン起動メッセージ

typedef struct {
    W       type;       /* = EXECREQ (= 0x10) */
    W       size;       /* メッセージ本体サイズ */
    LINK    self;       /* 起動ファイル */
    LINK    lnk;        /* 対象ファイル */
    W       vid;        /* 対象仮身 ID */
    W       pwid;       /* 親ウィンドウ ID */
    W       info;       /* レコード番号 / 付箋データポインタ */
    RECT    r;          /* 生成元 */
    COLOR   bgcol;      /* 元の仮身の背景色 */
    W       mode;       /* 起動モード */
} M_EXECREQ;

□ 開いた仮身の表示起動メッセージ

typedef struct {
    W      type;       /* = DISPREQ (= 0x11) */
    W      size;       /* メッセージ本体サイズ */
    LINK   self;       /* 起動ファイル */
    LINK   lnk;        /* 対象ファイル */
    W      vid;        /* 対象仮身 ID */
    W      pwid;       /* 親ウィンドウ ID */
    W      info;       /* 付箋データポインタ */
    COLOR  bgcol;      /* 元の仮身の背景色 */
    W      gid;        /* 描画環境 ID */
} M_DISPREQ;

□ データ貼り込み起動メッセージ

typedef struct {
    W       type;       /* = PASTEREQ (= 0x12) */
    W       size;       /* メッセージ本体サイズ */
    LINK    self;       /* 起動ファイル */
    LINK    lnk;        /* 対象ファイル */
    W       vid;        /* 対象仮身 ID */
    W       pwid;       /* 親ウィンドウ ID */
    W       info;       /* 付箋データポインタ */
} M_PASTEREQ;

□ 付箋のオープン起動メッセージ

typedef struct {
    W       type;       /* = FUSENREQ (= 0x13) */
    W       size;       /* メッセージ本体サイズ */
    LINK    self;       /* 起動ファイル */
    W       vid;        /* 対象付箋 ID */
    W       pwid;       /* 親ウィンドウ ID */
    W       info;       /* 付箋データポインタ */
    RECT    r;          /* 生成元 */
} M_FUSENREQ;

□ 開いた仮身のTADデータ作成起動メッセージ

typedef struct {
    W       type;       /* = TADREQ (= 0x14) */
    W       size;       /* メッセージ本体サイズ */
    LINK    self;       /* 起動ファイル */
    LINK    lnk;        /* 対象ファイル */
    W       vid;        /* 対象仮身 ID */
    W       pwid;       /* 親ウィンドウ ID */
    W       info;       /* 付箋データポインタ */
    COLOR   bgcol;      /* 元の仮身の背景色 */
    LINK    save;       /* TADの保存先ファイル */
    RECT    r;          /* 表示領域 */
} M_TADREQ;

□ 実身/仮身マネ−ジャの定義

#define FSNM_LEN    40  /* ファイルシステム名のバイト長 */
#define RELNM_LEN   32  /* 続柄名のバイト長 */
#define DTYPE_LEN   32  /* データタイプ名のバイト長 */
typedef union {
    VOBJSEG     *vobj;  /* 仮身セグメント */
    FUSENSEG    *fsn;   /* 付箋セグメント */
} VFPTR;

□ 仮身

typedef struct {
    TC  fs_name[20];    /* ファイルシステム名 */
    UH  f_id;           /* ファイル ID */
    UH  attr;           /* 仮身タイプ/属性 */
    UH  rel;            /* 続柄インデックス */
    UH  appl[3];        /* アプリケーション ID */
} VLINK;

□ 続柄データ

typedef struct {
    TC      name[16];   /* 続柄名 */
    COLOR   col;        /* 続柄名の色 */
} VOBJREL;

□ 仮身の表示モード

#define  V_NODISP   0   /* 表示しない */
#define  V_ERASE    0   /* 消去する */
#define  V_DISP     1   /* 表示エリアクリア */
#define  V_DISPALL  2   /* 表示エリア表示 */
#define  V_DISPAREA 3   /* 表示エリアのみ表示 */
#define  V_ERAORG   4   /* 元を消去する */
#define  V_NOFRAME  8   /* 境界線なし */

□ 仮身の位置コード

#define  V_WORK     0   /* 表示エリア内 */
#define  V_FRAM     1   /* 仮身枠 */
#define  V_PICT     2   /* ピクトグラム */
#define  V_NAME     3   /* 実身名 */
#define  V_LTHD     4   /* ハンドル (左上) */
#define  V_RTHD     5   /* ハンドル (右上) */
#define  V_LBHD     6   /* ハンドル (左下) */
#define  V_RBHD     7   /* ハンドル (右下) */
#define  V_RELN     8   /* 続柄 */

□ 仮身の変形指定

#define  V_CHECK    0       /* 大きさのチェック */
#define  V_SIZE     0x10    /* 変形する */
#define  V_OPEN     0x20    /* 仮身を開く */
#define  V_CLOSE    0x30    /* 仮身を閉じる */
#define  V_ADJUST   0x40    /* 全体表示の長さ */
#define  V_ADJUST1  0x50    /* 名前表示の長さ */
#define  V_ADJUST2  0x60    /* 続柄まで表示の長さ */
#define  V_ADJUST3  0x70    /* 日付以外表示の長さ */

□ 仮身の属性/状態

#define  V_NONAME   0x0001  /* 実身名の表示なし */
#define  V_NORELN   0x0002  /* 続柄名の表示なし */
#define  V_NOTYPE   0x0004  /* データタイプの表示なし */
#define  V_NOTIME   0x0008  /* 変更日時の表示なし */
#define  V_FIXDEF   0x0010  /* 固定デフォールトアプリ */
#define  V_NOIMG    0x0020  /* イメージ保存なし */
#define  V_NOPICT   0x0040  /* ピクトグラム表示なし */
#define  V_NOFDISP  0x0080  /* 仮身枠表示なし */
#define  V_OPENED   0x0100  /* オープン仮身 */
#define  V_NOEXPND  0x0200  /* 印刷時展開なし */
#define  V_LINKFL   0x0800  /* リンクファイル */
#define  V_DETACH   0x1000  /* 虚身状態 */
#define  V_INPROC   0x2000  /* 処理中状態 */
#define  V_AUTEXE   0x4000  /* 自動起動 */
#define  V_HIDDEN   0x8000  /* 隠蔽仮身 */
#define  V_GETSTS   0x8000  /* 現在の状態の取り出し */
#define  V_PURGE    0xffff  /* 保存表示イメージを廃棄 */
#define  V_CHKREF   0x8888  /* 参照状態のチェック */
#define  V_CHKDUP   0x9999  /* 重複状態のチェック */
#define  F_NONAME   0x0800  /* 付箋名の表示なし */
#define  F_NOTYPE   0x0400  /* データタイプの表示なし */
#define  F_HIDDEN   0x8000  /* 隠蔽付箋 */

□ 仮身メニューの操作タイプ

#define  VM_NONE    0   /* 何も変更されなかった */
#define  VM_OPEN    1   /* 仮身が開かれた */
#define  VM_CLOSE   2   /* 仮身が閉じられた */
#define  VM_NAME    3   /* 実身名が変更された */
#define  VM_RELN    4   /* 続柄が変更された */
#define  VM_NEW     5   /* 新版が作成された */
#define  VM_DETACH  6   /* 切断状態となった */
#define  VM_DISP    7   /* 仮身の表示属性が変更された */
#define  VM_REFMT   8   /* 再フォーマットされた */
#define  VM_PASTE   9   /* 仮身へ埋め込まれた */
#define  VM_EXREQ   10  /* 付箋起動が要求された */
#define  VM_ATTACH  11  /* 接続状態となった */
#define  VM_APLREG  12  /* アプリ登録された */
#define  VM_APLDEL  13  /* アプリ登録が削除された */
#define  VM_INFO    14  /* 管理情報が表示された */
#define  VM_DISK    15  /* ディスク状態が表示された */
#define  VM_GABAGE  16  /* ディスク整理が起動された */

□ 選択枠領域

/* 選択枠領域 */
typedef struct {
    UW      sts;    /* 状態 */
    union {
        POLY    p;  /* 多角形選択領域 */
        RECT    r;  /* 長方形選択領域 */
    } rgn;
} SEL_RGN;
#define SEL_POLYRGN 0x4000  /* 多角形選択領域 */

□ 選択枠領域リスト

typedef struct sel_list {
    struct sel_list *next;  /* 次の選択枠へのポインタ(最後はNULL) */
    SEL_RGN         rgn;    /* 選択枠領域 */
} SEL_LIST;

3.8.5 実身/仮身マネージャの関数

ここでは、実身 / 仮身マネージャがサポートしている各関数の詳細を説明する。 これらの関数群は外殻の拡張システムコールとして提供される。

関数値は、何らかのエラーがあった場合は「負」のエラーコードが戻る。 正常終了時には「0」または「正」の値が戻る。

各関数のエラーコードとしては、 ここで示した以外にも、 核や他の外殻でエラーが検出された場合は、 そのエラーコードが直接戻る場合がある。

また、各関数のパラメータの説明では、以下に示す記述方法を使用している。

    ( x ‖ y ‖ z ) -- x, y, z のいずれか1つを意味する。
    |               -- OR で指定可能なことを意味する。
    [ ]             -- 省略可能なことを意味する。

実身 / 仮身マネージャの関数は他の外殻の関数と比較して、 よりアプリケーションレベルに近いため、 関数によってはパネルを利用したユーザとのインタラクションが含まれている点に注意が必要である。

ここで示している多くの関数は、 特に記述がない限り、 仮身だけでなく付箋に対しても適用される。 したがって、単に「仮身」と記述してある場合は「付箋」も含まれるものとする。

oreg_vob
 
仮身の登録

【形式】

VID oreg_vob(VLINK *vlnk, VP vseg, W wid, UW disp)

【パラメータ】

VLINK   *vlnk   仮身(リンク)
                =   NULL : 付箋
VP  vseg        仮身セグメント/付箋セグメント
W   wid         p ≧ 0 : ウィンドウ ID
                  < 0 : - (描画環境 ID)
UW  disp        仮身の表示方法
                ::= (V_NODISP ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA)
                    | [V_NOFRAME] | [V_AUTEXE]
V_NODISP

表示は行なわない

V_DISP

表示する ( 開いた仮身の表示エリアはウィンドウの背景色で塗り潰す)

V_DISPALL

表示する(開いた仮身の表示エリアは対応するデフォールトアプリケーションを起動して表示する)

V_DISPAREA

開いた仮身の表示エリアのみを表示し、 表示エリアの境界線を含めた外側は一切表示しない。 閉じた仮身の場合は何も表示しない。 これは清書表示として開いた仮身の中味のみを表示する場合に使用される。 この場合、V_NOFRAME 指定は意味を持たない。

V_NOFRAME

仮身の境界線を点線とする。V_NODISP 指定の場合は意味を持たない。 これは内部仮身の表示に使用される。

V_AUTEXE

vlnkattrV_AUTEXE が設定されているとき、 登録後にデフォールトアプリケーションを起動する。

【リターン値】

≧0    正常 (仮身 ID (vid > 0))
<0    エラー (エラーコード)

【解説】

vlnk で指定した仮身 ( リンク ) に対する vseg で指定した仮身セグメントを、 wid で指定したウィンドウ / パネル上に登録し、 関数値として仮身 ID ( vid > 0 ) を戻す。

wid < 0 の場合は、- wid を描画環境 ID とみなして登録を行ない、 その描画環境に仮身の表示が行なわれる。 この場合、登録した仮身に対するウィンドウ ID を使用した操作は制限される。 - wid の描画環境 ID が存在しない場合も登録は可能であり、 仮身を登録して表示以外の処理をしたい場合に使用される。 この場合、表示を行なった時点でエラー ( EG_GID ) となる。

vlnk で指定した仮身の参照するファイルシステムが接続されておらず、 かつ同一のファイルを参照する他の仮身 ( 虚身 ) が登録されていない場合は、 「デバイス接続パネル」が表示され、デバイスの接続を求める。 接続が行なわれなかった場合はエラー ( ER_NOFS ) リターンする。

vseg で指定した仮身セグメント内の view により仮身の領域が指定される。 view で示される領域の大きさが不正である場合は、 最も近い正しい領域に更新される。 また view が空の領域の場合は、 仮身はデフォールトの大きさになる。

登録した後は、vseg で指定したメモリ領域は参照されないため、 データを変更してもよい。

vlnk = NULL の場合は、 付箋の登録となり、vsegFUSENSEG へのポインタとなる。 この場合、V_DISPV_DISPAREA は、すべて同一の意味となる。

【エラーコード】

EX_ADR      : アドレス(vlnk,vseg)のアクセスは許されていない。
EX_LIMIT    : システムの制限を越えた(仮身の登録最大数を超えた)。
EX_NOSPC    : システムのメモリ領域が不足した。
EX_PAR      : パラメータが不正である(disp,vseg の内容が不正)。
EX_WID      : ウィンドウ(wid)は存在していない。
b_odup_vob
 
仮身の複製

【形式】

VID b_odup_vob(W org)

【パラメータ】

W   org 仮身 ID

【リターン値】

≧0    正常 (仮身 ID (vid > 0))
<0    エラー (エラーコード)

【解説】

org で指定した仮身 ID を持つ仮身と同一内容をもつ仮身を新規に登録 ( 複製 ) し、 その仮身 ID ( vid > 0 ) を関数値として戻す。

この関数は、おもに仮身の複写に使用される。

【エラーコード】

EX_LIMIT    : システムの制限を越えた(仮身の登録最大数を超えた)。
EX_NOSPC    : システムのメモリ領域が不足した。
EX_VID      : 仮身 ID (vid) は存在していない。
odel_vob
 
仮身の登録削除

【形式】

W   odel_vob(W vid, W clr)

【パラメータ】

W   vid ≧ 0 : 仮身 ID
        < 0 : - (ウィンドウ ID)
W   clr = 0 : 消去を行わない
        ≠ 0 : 仮身の表示領域をウィンドウ背景色で塗り潰す

【リターン値】

≧0    正常 (削除した仮身の数)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の登録を削除する。

vid < 0 の場合は、- vid で指定した値をウィンドウ ID とみなして、 そのウィンドウ / パネル上に登録されているすべての仮身を削除する ( ただし、wid < 0 で登録した仮身に対しては適用できない)。 この場合、ウィンドウ / パネルが実際に存在するかはチェックされない。

clr = 0 の場合は、仮身の表示はそのままであり特に消去は行なわず、 clr≠ 0 の場合は、仮身の表示領域がウィンドウの背景色で塗り潰される ( wid < 0 で登録した仮身の場合は、常に白で塗りつぶされる)。

関数値として削除した仮身の数が戻る。 従って、vid > 0 の場合は常に "1" となる。 vid < 0 の場合で、 指定したウィンドウに仮身が 1 つも登録されていない場合は何もせず、 関数値 "0" が戻る。

ウィンドウ / パネルが削除された場合、 そのウィンドウ / パネル上に登録されている仮身は自動的に削除される ( ocls_wnd() を参照のこと ) 。 ただし、wid < 0 で登録した仮身は自動的に削除されることはないため、 必ず odel_vob() により、1 つずつ削除しなくてはいけない。

なお、処理中状態の仮身に対しては削除された後も、 ocre_obj(), oend_prc(), oatt_vob(), oopn_obj(), ocnv_vob(), oget_fsn(), oput_fsn() の各関数は実行できる。

【エラーコード】

EX_VID      : 仮身 ID (vid) は存在していない。
ocls_wnd
 
ウィンドウのクローズ処理

【形式】

ERR ocls_wnd(W wid)

【パラメータ】

W   wid ウィンドウ ID

【リターン値】

=0    正常

【解説】

wid で指定したウィンドウ / パネルがクローズされたことを通知し、 ウィンドウ / パネルに属する仮身の登録の削除、仮身の処理中状態の解除、 仮身のデータの更新等を行なう。wid で指定したウィンドウ/ パネルが実際に存在するかはチェックされない。

指定したウィンドウ / パネルに仮身が 1 つも登録されていない場合は何もしない。

この関数はウィンドウマネージャにより、ウィンドウ / パネルがクローズされた場合に実行されるため、 一般のアプリケーションでは通常は使用しない。

【エラーコード】

なし

odsp_vob
 
仮身の表示

【形式】

W   odsp_vob(W vid, RECT *r, UW disp)

【パラメータ】

W       vid ≧ 0      : 仮身 ID
            = 0x8000 : 仮身リスト指定
            < 0      : - (ウィンドウ ID)
RECT    *r            表示領域 (仮身リスト指定のときは、仮身リストへのポインタ)
UW      disp          仮身の表示/消去方法
                     ::= (V_ERASE ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_NOFRAME]
V_ERAS

消去する ( ウィンドウの背景色で塗り潰す )。

V_DISP

表示する(開いた仮身の表示エリアはウィンドウの背景色で塗り潰す)。

V_DISPALL

表示する ( 開いた仮身の表示エリアは対応するデフォールトアプリケーションを起動するか、 保存されている表示イメージにより表示する ) 。

V_DISPAREA

開いた仮身の表示エリアのみを表示し、 表示エリアの境界線を含めた外側は一切表示しない。 閉じた仮身の場合は何も表示しない。 これは清書表示として開いた仮身の中味のみを表示する場合に使用される。 この場合、V_NOFRAME 指定は意味を持たない。

V_NOFRAME

仮身の境界線を点線とする。V_ERASE 指定の場合は意味を持たない。 これは内部仮身の表示に使用される。

【リターン値】

≧0    正常 (処理した仮身の数)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の表示/消去を行なう。 r は表示すべき領域の相対座標での指定であり、 仮身の領域と r の共通部分のみが表示される。 r = NULL の場合は、仮身の領域全体が表示される。

仮身の表示は、その時点の仮身の状態 ( 虚身状態、処理中状態等 ) に応じて行なわれる。

vid < 0 の場合は、- vid で指定した値をウィンドウ ID とみなして、 そのウィンドウ / パネル上に登録されているすべての仮身の表示 / 消去を行なう。

vid = 0x8000 のときは、仮身リスト指定となり、 r を以下の仮身リスト構造へのポインタとみなして、 複数の仮身の表示を高速に行なう。 この場合、指定する仮身はすべて同一のウィンドウ / パネル、 または描画環境に属していなくてはいけない ( そうでない場合の表示は保証されない )。 また、途中の仮身 ID が不正のときは、 それ以降の仮身の表示は保証されない。

    Wffff   vid -- 仮身 ID
    RECT    r   -- 表示領域
       :   :
    W       0   -- 終了を示す

関数値として処理した仮身の数が戻る。 従って、vid > 0 の場合は常に "1" となる。 vid< 0 の場合は、 指定したウィンドウ / パネルに仮身が 1 つも登録されていない場合は何もせず、 関数値 "0" が戻る。 この場合、ウィンドウ / パネルが実際に存在するかはチェックされない。 また、vid = 0x8000 の場合は、 関数値は常に "0" となる。

付箋の場合は、V_DISPV_DISPAREA は、すべて同一の意味となる。

【エラーコード】

EX_ADR      : アドレス(r)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(disp が不正)。
EX_VID      : 仮身 ID (vid)は存在していない。
EX_WID      : ウィンドウ(wid)は存在していない(vid < 0 のときのみ)。
odsp_vor
 
仮身の倍率表示

【形式】

W   odsp_vor(W vid, RECT *r, UW disp, PNT scal)

【パラメータ】

W       vid ≧ 0      : 仮身 ID
            = 0x8000 : 仮身リスト指定
            < 0      : - (ウィンドウ ID)
RECT    *r            表示領域 (仮身リスト指定のときは、仮身リストへのポインタ)
UW      disp          仮身の表示方法 (odsp_vob と同じ)
                        ::= (V_ERASE ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_NOFRAME]
PNT scal    表示倍率

【リターン値】

≧0    正常 (処理した仮身の数)
<0    エラー (エラーコード)

【解説】

仮身の拡大 / 縮小表示を行なう。 scal で指定された倍率により拡大 / 縮小を行なう以外は odsp_vob() と同一である。

scal.x は横方向の倍率を示し、scal.y は縦方向の倍率を示す。 倍率は 256 倍の値で表現され、0x100 で 1 倍を示す。 scal.x = 0 または scal.y = 0 の場合は、縦横 1 倍とみなす。

倍率は、仮身の表示座標、文字サイズ、ピクトグラムの大きさ、 開いた仮身の表示領域のイメージに影響するが、 最大文字サイズの制限はインプリメントに依存する。 拡大した結果、座標がオーバーフローした場合の表示は保証されない。

【エラーコード】

EX_ADR      : アドレス(r)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(disp が不正)。
EX_VID      : 仮身 ID (vid)は存在していない。
EX_WID      : ウィンドウ(wid)は存在していない(vid < 0 のときのみ)。
odra_vob
 
仮身の一時的表示

【形式】

ERR odra_vob(VLINK *vlnk, VP vseg, W wid, UW disp)

【パラメータ】

VLINK   *vlnk    仮身(リンク)
                 = NULL : 付箋
VP      vseg     仮身セグメント/付箋セグメント
W       wid ≧ 0 : ウィンドウ ID
            < 0 : - (描画環境 ID)
UW      disp     仮身の表示方法 (odsp_vob と同じ)
                   ::= (V_ERASE ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_NOFRAME]

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vlnk で指定した仮身 ( リンク ) に対する vseg で指定した仮身セグメントを、 wid で指定したウィンドウパネル上に表示する。

wid < 0 の場合は、 - wid を描画環境 ID とみなして表示を行なう。 描画環境 ID が存在しない場合はエラー ( EG_GID ) となる。

vlnk で指定した仮身の参照するファイルシステムが接続されておらず、 かつ同一のファイルを参照する他の仮身 ( 虚身 ) が登録されていない場合は、 「デバイス接続パネル」が表示され、 デバイスの接続を求める。 接続が行なわれなかった場合はエラー ( ER_NOFS ) リターンする。

vseg で指定した仮身セグメント内の view により仮身の領域が指定される。 view で示される領域の大きさが不正である場合は、 最も近い正しい領域に更新される。 特に view が空の領域の場合は、 仮身はデフォールトの大きさとなる。

仮身の表示は、その時点の仮身の状態(虚身状態等)に応じて行なわれる。

disp により、仮身の境界線の有無、および表示/消去方法を指定する。

vlnk = NULL の場合は、付箋の一時的表示となり、 vsegFUSENSEG へのポインタとなる。 この場合、V_DISPV_DISPAREA は、 すべて同一の意味となる。

【エラーコード】

EX_ADR      : アドレス(vlnk,vseg)のアクセスは許されていない。
EX_NOSPC    : システムのメモリ領域が不足した。
EX_PAR      : パラメータが不正である(disp,vseg の内容が不正)。
EX_WID      : ウィンドウ(wid)は存在していない。
odra_vor
 
仮身の一時的倍率表示

【形式】

ERR odra_vor(VLINK *vlnk, VP vseg, W wid, UW disp, PNT scal)

【パラメータ】

VLINK   *vlnk    仮身(リンク)
                 = NULL : 付箋
VP      vseg     仮身セグメント/付箋セグメント
W       wid ≧ 0 : ウィンドウ ID
            < 0 : - (描画環境 ID)
UW      disp     仮身の表示方法 (odsp_vob と同じ)
                 ::= (V_ERASE ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_NOFRAME]
PNT scal    表示倍率

【リターン値】

=0 正常 <0 エラー (エラーコード)

【解説】

仮身の一時的拡大 / 縮小表示を行なう。scal で指定された倍率により拡大 / 縮小を行なう以外は odra_vob() と同一である。

scal.x は横方向の倍率を示し、scal.y は縦方向の倍率を示す。 倍率は 256 倍の値で表現され、0x100 で 1 倍を示す。 scal.x = 0 または scal.y = 0 の場合は、縦横 1 倍とみなす。

倍率は、仮身の表示座標、文字サイズ、ピクトグラムの大きさ、 開いた仮身の表示領域のイメージに影響するが、 最大文字サイズの制限はインプリメントに依存する。 拡大した結果、座標がオーバーフローした場合の表示は保証されない。

【エラーコード】

EX_ADR      : アドレス(vlnk,vseg)のアクセスは許されていない。
EX_NOSPC    : システムのメモリ領域が不足した。
EX_PAR      : パラメータが不正である(disp,vseg の内容が不正)。
EX_WID      : ウィンドウ(wid)は存在していない。
ofnd_vob
 
仮身の位置検索

【形式】

W   ofnd_vob(W wid, PNT pos, W *vid)

【パラメータ】

W   wid     ≧ 0 : ウィンドウ ID
            < 0 : - (仮身 ID)
PNT pos     位置
W   *vid    見つかった仮身 ID の格納場所

【リターン値】

≧0    正常 (位置コード)
<0    エラー (エラーコード)

【解説】

wid で指定したウィンドウ / パネルに登録してある全ての仮身に対して、 pos で指定した位置の点が含まれているか否かをサーチし、 含まれていた場合はその仮身 ID を、 含まれていない場合は "0" を vid で指定した領域に格納する。 サーチの順番は特に定義されない。

wid < 0 の場合は、- wid を仮身 ID とする仮身に対して、 pos で指定した位置の点が含まれているか否かをチェックする。 この場合、ウィンドウ / パネルが実際に存在するかはチェックされない。

pos はウィンドウ / パネル内の相対座標で指定する。

関数値として以下の位置コードが戻る。

V_WORK(0) -- 表示エリア内、または含まれていない
V_FRAM(1) -- 仮身枠
V_PICT(2) -- ピクトグラム
V_NAME(3) -- 実身名
V_LTHD(4) -- ハンドル (左上)
V_RTHD(5) -- ハンドル (右上)
V_LBHD(6) -- ハンドル (左下)
V_RBHD(7) -- ハンドル (右下)
V_RELN(8) -- 続柄

V_FRAMは、 上記以外の仮身の矩形領域内の部分を示す ( 境界線も含む )。 付箋の場合は V_WORK ( 表示エリア内 ) 、V_RELN は適用されない。

指定したウィンドウに仮身が 1 つも登録されていない場合は、 vid には "0" が格納され、 関数値 "0" が戻る。

なお、wid < 0 で登録した仮身に対しては、この関数は適用できない。

【エラーコード】

EX_ADR      : アドレス(vid)のアクセスは許されていない。
EX_VID      : 仮身 ID (vid)は存在していない(wid < 0 のとき)。
omov_vob
 
仮身の移動

【形式】

ERR omov_vob(W vid, W wid, RECT *newr, UW disp)

【パラメータ】

W       vid ≧ 0 : 仮身 ID
            < 0 : - (ウィンドウ ID)
W       wid ≧ 0 : ウィンドウ ID
            = 0xFFFF8000 : 仮身の暫定削除
            < 0 : - (描画環境 ID)
RECT    *newr    移動位置
UW      disp     仮身の表示方法
                 ::= (V_NODISP ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_ERAORG]
V_NODISP

表示は行なわない。

V_DISPV_DISPAREA

odsp_vob() での指定と同じ。

V_ERAORG

移動した仮身の元の位置の表示を消去して移動する。 この指定が無い場合は、仮身の元の位置の表示に関しては何も行なわない。

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の現在位置を、 wid で指定したウィンドウ / パネル内の newr で指定した位置に移動する。 wid = 0 の場合は、 ウィンドウの変更がないことを意味する。

wid = 0xFFFF8000 (- 0x8000)は、 特別に指定した仮身を暫定的に削除することを意味する。 暫定的に削除した仮身は、再度、omov_vob() により、 正しいウィンドウに移動することにより復旧することができ、 odel_vob() により完全に削除することができる。 この場合、newr は無視され、位置の移動は行なわれない。 また、disp パラメータも無視され、常に V_NODISP となる。 この機能は、アプリケーションで仮身を削除する場合や、 トレーに切り取る場合に「復旧」機能を実現するために使用される。 トレーに仮身を切り取る場合、 切り取った仮身は必ず、暫定削除、 もしくは「復旧」機能を実現しない場合は削除しなくてはいけない。 暫定的に削除した仮身は、omov_vob()odel_vob() 以外の関数を実行した場合、EX_VID のエラーとなる。

暫定削除された仮身に対して、 omov_vob(), odel_vob() 以外の関数を実行すると、 EX_VID のエラーとなる。 ただし、処理中状態の仮身は暫定削除された後も、 ocre_obj(), oend_prc(), oatt_vob(), oopn_obj(), ocnv_vob(), oget_fsn(), oput_fsn() の各関数は実行できる。

wid < 0 の場合は、 - wid を描画環境 ID とみなして移動を行ない、 描画環境に仮身の表示が行なわれる。V_NODISP 指定以外で - wid の描画環境 ID が存在しない場合はエラー ( EG_GID ) となる。

vid < 0 の場合は、- vid をウィンドウ ID とするウィンドウ内のすべての仮身を wid で指定したウィンドウへ移動する。 この場合、newr は無視され、位置の移動は行なわれない。 また、disp パラメータも無視され、 常に V_NODISP となる ( ただし、wid < 0 で登録した仮身に対しては適用できない)。

newr->p.lefttop により仮身の表示矩形の左上の点をウィンドウ / パネルの相対座標で指定する。 仮身の大きさは変更されないため、 pos->p.rightbot は無視され、実行終了時に移動後の仮身の表示矩形領域が、 newr で指定した領域に戻される。 newr = NULL の場合は、 位置の移動を行なわずにウィンドウの移動のみを行なう。

処理中状態の仮身を別のウィンドウに移動した場合は、 その仮身から開かれているウィンドウの親ウィンドウ、 生成元が変更される。wid で指定した移動先のウィンドウ / パネルが存在していない場合はエラー (EX_WID ) となる。ただし、 wid < 0V_NODISP 指定の場合は - wid の描画環境の存在はチェックされない。

付箋の場合は、V_DISPV_DISPAREA は、 すべて同一の意味となる。

【エラーコード】

EX_ADR      : アドレス(newr)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(disp が不正)。
EX_VID      : 仮身 ID(vid)は存在していない。
EX_WID      : ウィンドウ(wid)は存在していない(wid > 0の場合)。
orsz_vob
 
仮身の変形

【形式】

ERR orsz_vob(W vid, RECT *newr, UW mode)

【パラメータ】

W       vid 仮身 ID
RECT    newr    変形位置
UW      mode    ::= (V_SIZE ‖ V_ADJUST(1〜3) ‖ V_OPEN ‖ V_CLOSE ‖ V_CHECK)
                    | (V_NODISP‖ V_DISP ‖ V_DISPALL‖ V_DISPAREA) | [V_ERAORG]
V_SIZE

newr で指定した矩形領域に変形する。 newr は、ウィンドウ / パネルの相対座標で指定され、 元の仮身の矩形領域の 4 隅の点のうち少なくとも 1 点は一致していなくてはいけない。 仮身のタイトル部の高さは、文字サイズに依存するため、newr で指定した大きさと、 実際に変形された大きさは少し異なる場合がある。 指定した大きさによって、仮身のオープン / クローズも行なわれることになる。

V_ADJUST, V_ADJUST1, V_ADJUST2, V_ADJUST3

仮身の長さをそれぞれ、全体、名前まで、名前 + 続柄まで、 名前 + 続柄 + データタイプまで表示する長さとなるように、 仮身の右側の座標のみを変更する。

V_OPEN

仮身をデフォールトの大きさで開く。既に開いている場合は何も行なわない。

V_CLOSE

仮身を閉じる。既に閉じている場合は何も行なわない。

V_CHECK

変形せずに、現在の仮身の矩形領域を戻す。

V_NODISP〜V_ERAORG

変形後の表示指定(omov_vob() と同じ)。 実際の変形が行なわれなかった場合 ( V_CHECK 指定を含む)にも、 この表示指定は有効であり、指定に従った再表示を行なう。

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身を mode で指定した方法により変形し、 変形の結果の新しい仮身の矩形領域を、 newr で指定した領域に戻す。

処理中状態の仮身の大きさが変更された場合は、 その仮身から開かれているウィンドウの生成元が変更される。

付箋の場合は、V_DISPV_DISPAREA は、 すべて同一の意味となる。また、V_OPEN, V_CLOSEEX_PAR のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(newr)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(mode が不正、変形の点が一致していない)。
EX_VID      : 仮身 ID (vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(仮身は開けない)。
ochg_chs
 
仮身の文字サイズの変更

【形式】

W   ochg_chs(W vid, W chsz, RECT *newr, UW mode)

【パラメータ】

W       vid     仮身 ID
W       chsz    文字サイズ (-1 は変更なし, 0 はデフォールト)
RECT    *newr   仮身矩形領域が格納される
UW      mode    ::= [V_ADJUST] |
                    (V_NODISP‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_ERAORG]
V_ADJUST

仮身の長さを、文字サイズの変更に比例して変更する。 この指定がない場合は、仮身の長さは変更されない。

V_NODISPV_ERAORG

変形後の表示指定( omov_vob() と同じ )。 仮身の大きさが実際に変更されなかった場合にも、 この示指定は有効であり、指定に従った再表示を行なう。

【リターン値】

≧0    正常 (変更前の文字サイズ)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の文字サイズを chsz で指定した大きさに変更し、 変更前の文字サイズを関数値として戻す。 chsz = - 1 の場合は変更せずに現在の文字サイズを戻す。 chsz = 0 はデフォールトの文字サイズを意味する。

仮身の高さは、文字サイズに応じて変更される。 開いた仮身の場合は、表示エリアの高さは変更されないが、 タイトル部の高さが変更されるため、 全体の高さが変更されることになる。

newrNULL でない場合は結果の仮身の矩形領域を、 newr で指定した領域に戻す。

処理中状態の仮身の大きさが変更された場合は、 その仮身から開かれているウィンドウの生成元が変更される。

付箋の場合は、V_DISPV_DISPAREA は、 すべて同一の意味となる。

【エラーコード】

EX_ADR      : アドレス(newr)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(mode,chsz が不正)。
EX_VID      : 仮身 ID(vid)は存在していない。
ochg_col
 
仮身表示色の変更

【形式】

ERR ochg_col(W vid, COLOR frcol, COLOR chcol, COLOR tbcol, COLOR bgcol, UW disp)

【パラメータ】

W       vid     仮身 ID
COLOR   frcol   枠の色 (-1 は変更なし)
COLOR   chcol   文字色 (-1 は変更なし)
COLOR   tbcol   タイトル背景色 (-1 は変更なし)
COLOR   bgcol   開いた場合の表示エリアの背景色 (-1 は変更なし)
UW      disp    仮身の表示方法(omov_vob と同じ)
                ::= (V_NODISP ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA) | [V_ERAORG]

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の表示色を、 frcol ( 枠の色 ), chcol ( 文字色 ), tbcol ( タイトル背景色 ), bgcol ( 開いた場合の表示エリアの背景色 ) で指定した色に変更する。 それぞれの値が - 1 のときは、 対応する色は変更しないことを意味する。

disp により表示の指定を行なう。 内容は、omov_vob() での指定と同じである。

付箋の場合は、V_DISPV_DISPAREA は、 すべて同一の意味となる。また、bgcol は適用されず無視される。

【エラーコード】

EX_PAR      : パラメータが不正である(disp が不正)。
EX_VID      : 仮身 ID (vid)は存在していない。
ochg_nam
 
実身名の変更

【形式】

W   ochg_nam(W vid, TC *name)

【パラメータ】

W   vid     仮身 ID
TC  *name   実身名文字列 (NULL はユーザ設定)

【リターン値】

=0    正常 (変更なし)
=1    正常 (変更した)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身が参照している実身の名前を、 name で指定した名前に変更する。 name = NULL の場合は、 「実身名変更パネル」が表示されて、 ユーザによる実身名の変更が行なわれる。

関数値として実身名が変更された場合に "1" が戻り、 変更されなかった場合は "0" が戻る。 従って "1" が戻った場合は、 仮身の再表示を行なう必要がある。

実身名を変更した実身と同一の実身を参照している他の仮身が存在した場合には、 その仮身に対して仮身要求イベントが送信される ( vid で指定した仮身に対しては送信されない )。

実身名を変更した仮身が処理中状態の場合、 開かれているウィンドウのタイトルも同時に変更される。

name = NULL の場合、 指定した仮身が切断状態のときは自動的に「デバイス接続パネル」が表示され、 ファイルシステムの接続を求める。 また、ファイル管理のエラーにより実身名の変更ができなかった場合は、 その旨のエラーパネルが表示された後にエラーリターンする。

name≠NULL の場合、 指定した仮身が切断状態のときは単にエラーリターンする。 また、ファイル管理のエラーにより実身名の変更ができなかった場合は単にエラーリターンし、 パネルは一切表示されない。

指定した仮身がデバイス仮身の場合は、 対応するファイルシステムの名称の変更となり、 そのファイルシステム内に処理中の仮身が存在する場合は、 EX_VOBJ のエラーとなる。 なお、デバイス仮身の名称の変更は、 name = NULL の場合のみ可能である。

付箋の場合も同様の処理を行なう。

【エラーコード】

EX_ADR      : アドレス(name)のアクセスは許されていない。
EX_VID      : 仮身 ID (vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(name≠NULLで切断状態、デバイス仮身)。
ochg_rel
 
続柄の変更

【形式】

W   ochg_rel(W vid, W index)

【パラメータ】

W   vid     仮身 ID
W   index   続柄のインデックス(< 0 はユーザ設定)

【リターン値】

=0    正常 (変更なし)
=1    正常 (変更した)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の続柄のインデックスを、 index で指定した値に変更する。 指定したインデックスが存在しない場合はエラーとなる。

index < 0 の場合は、 「続柄変更パネル」が表示され、 ユーザによる続柄の変更および登録が行なわれる。

「続柄変更パネル」により既に存在する続柄が変更された場合、 変更された続柄インデックスを持つ他の仮身に対して仮身要求イベントが送信される ( vid で指定した仮身に対しては送信されない )。

関数値として続柄が変更された場合に "1" が戻り、 変更されなかった場合は "0" が戻る。 従って "1" が戻った場合は、 仮身の再表示を行なう必要がある。

index < 0 の場合、 指定した仮身が切断状態のときは自動的に「デバイス接続パネル」が表示され、 ファイルシステムの接続を求める。 ファイル管理のエラーが発生した場合は、 その旨のエラーパネルが表示された後にエラーリターンする。

index ≧ 0 の場合、 指定した仮身が切断状態のときは単にエラーリターンする。 また、ファイル管理のエラーが発生した場合は単にエラーリターンし、 パネルは一切表示されない。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_PAR      : パラメータが不正である(index が不正)。
EX_VID      : 仮身ID (vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(index≧0 で虚身状態、付箋)。
onew_obj
 
新版作成

【形式】

VID onew_obj(W vid, VLINK *vlnk)

【パラメータ】

W       vid     仮身 ID
VLINK   *vlnk   仮身(リンク)

【リターン値】

≧0    正常 (新版または複製した仮身 ID)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の新版の作成またはデバイスの複製を行ない、 作成した新版または複製したデバイスを参照する仮身 ID を関数値として戻す。

vid で指定した仮身がフロッピーディスクのデバイス仮身の場合は、 「デバイス複製パネル」が表示され、 デバイスの複製か新版作成かを選択する。 ただし、通常、この機能はフロッピーディスクドライブが 2 台以上装着されているときにサポートされる。 フロッピーディスクのデバイス仮身でない場合は、常に新版作成となる。

新版作成の場合は、「新版作成パネル」が表示され、 新版の実身名を指定することができる。新版作成が終了すると、 新版を参照する仮身が指定した仮身の下または上に自動的に生成され、 関数値としてその仮身 ID が戻るので、その仮身を表示する必要がある。 新版は、vid で指定した仮身の所属デバイス上に生成される。 所属デバイスが未定義 ( ウィンドウの元となった実身が実身 / 仮身マネージャに登録されていない) の場合は、この関数を実行したプロセスの現在の作業ファイルと同一ファイルシステム上に生成される。

デバイスの複製の場合は、「デバイス接続パネル」により複製先のフロッピーディスクの接続が要求され、 接続した複製先のフロッピーディスクに指定したデバイス仮身の参照するフロッピーディスクの内容がすべて複製される。 この場合、接続したフロッピーディスクの元の内容は削除される。 複製が終了すると、接続した複製先のフロッピーディスクを参照する仮身が指定した仮身の下または上に自動的に生成され、 関数値としてその仮身 ID が戻るので、その仮身を表示する必要がある。

デバイスの複製、および新版作成の処理中は「新版作成中パネル」が表示される。

vlnk ≠ NULL の場合、 vlnk で指定した領域には、 作成した新版または複製したデバイスを参照するリンクが格納される。

指定した仮身が切断状態のときは自動的に「デバイス接続パネル」が表示され、 ファイルシステムの接続を求める。

ファイル管理のエラーが発生した場合は、 その旨のエラーパネルが表示された後にエラーリターンする。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(vlnk)のアクセスは許されていない。
EX_LIMIT    : システムの制限を越えた(ファイルの数が多すぎる)。
EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(処理中状態、付箋)。
ocre_obj
 
新規実身の生成

【形式】

W   ocre_obj(W vid, TC *name, W *nvid, LINK *lnk, W copy)

【パラメータ】

W       vid     仮身 ID
TC      *name   実身名文字列
W       *nvid   新規実身の仮身 ID 格納場所
LINK    *lnk    リンク格納場所
W       copy
≠0 :
vid で指定した仮身の参照する実身と同一の内容を持った実身を生成
=0 :
単に空の実身を生成

【リターン値】

≧0    正常 (生成した実身のファイルディスクリプタ)
<0    エラー (エラーコード)

【解説】

name で指定した名前の実身を新規に生成し、 そのファイルディスクリプタを関数値として戻す。

name が空文字列の場合は、「保存先指定パネル」が表示され、 生成する実身のデバイスを接続済みデバイスから選択、 および実身名の設定を行なう。name で指定された領域には指定された実身名が戻されるため、 20 + 1 文字以上の領域が確保されていなくてはいけない。 パネルにより「取り消し」が指定された場合は、EX_PAR のエラーとなる。

nvid ≠ NULL の場合、nvid で指定した領域には、 新規に生成した実身を参照する仮身 ID が格納され、 lnk ≠ NULL の場合は、lnk で指定した領域にリンクが格納される。

name が空文字列でない場合、 実身は、vid で指定した仮身の所属デバイス上に生成される。 所属デバイスが未定義 ( ウィンドウの元となった実身が実身 / 仮身マネージャに登録されていない ) の場合は、この関数を実行したプロセスの現在の作業ファイルと同一ファイルシステム上に生成される。

name が空文字列の場合、実身は、選択したデバイス上に生成される。

vid で指定した仮身の属するウィンドウに対して、 生成した実身に対する「新規仮身の挿入要求」の仮身要求イベントが送信される。

指定した仮身が虚身状態の場合は、EX_VOBJ のエラーとなる。

ファイル管理のエラーが発生した場合は、その旨のエラーパネルが表示された後にエラーリターンする。

この関数は、新規実身への保存の際に使用される。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(name,nvid,lnk)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(取り消し)。
EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(虚身状態、付箋)。
odsp_inf
 
管理情報の表示

【形式】

ERR odsp_inf(W vid)

【パラメータ】

W   vid 仮身 ID

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

「管理情報ウィンドウ」を表示するシステムアプリケーションを起動し、 vid で指定した仮身の参照する実身の「管理情報ウィンドウ」を表示する。

すでに、vid に対する「管理情報ウィンドウ」が表示されているときは、 ウィンドウの切り替えを行う。

管理情報ウィンドウを表示するシステムアプリケーションが存在しない場合は、 EX_NOEXS のエラーとなる。

指定した仮身が虚身状態の場合は、EX_VOBJ のエラーとなる。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_NOEXS    : 管理情報パネルを表示するシステムアプリケーションが登録されていない。
EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(虚身状態、付箋)。
odsk_inf
 
ディスク情報の表示

【形式】

ERR odsk_inf(W vid, W used, W gabage)

【パラメータ】

W   vid     仮身 ID
W   used    使用実身数
W   gabage  くず実身数

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の属するファイルシステムの「ディスク状態パネル」を表示する。

パネルには、「ディスク状態」メニューを指定した場合と同様に、 以下のような項目が表示されるが、[ディスク整理]の実行スイッチは表示されない。

    ファイルシステム(ディスク)名
    全体サイズ (K バイト)
    使用サイズ (K バイト)
    空きサイズ (K バイト)
    使用比率   (%)
    使用実身数
    くず実身数

used は使用実身数、gabage はくず実身数を示し、 used = 0 のときは、使用実身数、 くず実身数の両方を実際にチェックした結果を表示するが、 0 でない場合はチェックを行なわず、 used、gabage の値を、 そのまま使用実身数、くず実身数としてパネルに表示する。

【エラーコード】

EX_VID      : 仮身ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(虚身状態、付箋)。
oget_vob
 
仮身の取り出し

【形式】

W   oget_vob(W vid, VLINK *vlnk, VP vseg, UW size, UW *rsize)

【パラメータ】

W       vid 仮身 ID
VLINK   *vlnk   仮身(リンク)
VP      vseg    仮身セグメント
UW      size    vseg で指定した領域のバイト数
UW      *rsize  仮身ゼグメント全体のバイト数が戻される

【リターン値】

=0    正常 (vid は 仮身)
=1    正常 (vid は 付箋)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の現在の状態を、 vlnk で指定した領域に取り出し、 対応する仮身セグメントを vseg で指定した領域に格納する。 sizevseg で指定した領域のバイトサイズを示し、 このサイズが仮身セグメントのサイズより小さい場合は、そのサイズ分のみ格納される。

rsizeNULL でない場合は、 仮身セグメントの全体のバイト数が戻される。

vlnkNULL の場合は、 仮身データは格納されず、vsegNULL の場合は、 仮身セグメントは格納されない。

仮身を実身内に格納する場合は、 この関数により最終的な仮身データおよび、仮身セグメントを取り出す必要がある。

また、起動されたアプリケーションが元の仮身の表示環境を取り出すためにも使用される。

付箋の場合は、vlnk には何も格納されず、 vseg には FUSENSEG の内容が格納される。

関数値として、仮身のときは、"0"、付箋のときは、"1" が戻る。

特殊機能として、vid < 0 のときは - vid で指定した仮身が属するウィンドウの元となった仮身 ( 親 ) が属するファイルシステムを vlnk に取り出す。 不明のときは、EX_NOEXS のエラーとなる。 この場合、vseg, size, rsize は無視され、 vlnkNULL であってはならない。

【エラーコード】

EX_ADR      : アドレス(vlnk,vseg,rsize)のアクセスは許されていない。
EX_VID      : 仮身ID(vid)は存在していない。
EX_NOEXS    : 親のファイルシステムは不明 (vid < 0 のとき)
ochg_sts
 
仮身の状態の変更

【形式】

W   ochg_sts(W vid, UW mode)

【パラメータ】

W   vid     ≧ 0 : 仮身 ID
            < 0 : - (ウィンドウ ID)
UW  mode    状態変更モード
            ::=  V_GETSTS ‖ V_PURGE ‖ V_CHKREF ‖ V_CHKDUP ‖
                 (V_NONAME | V_NORELN | V_NOTYPE | V_NOTIME | 
                  V_FIXDEF | V_NOIMG | V_NOPICT | V_NOFDISP |
                  V_NOEXPND | V_AUTEXE)
V_GETSTS 0x8000

変更せずに現在の状態を取り出す

V_PURGE 0xFFFF

保存されている開いた仮身の表示イメージを廃棄し、 以後の表示時には必ず対応するアプリケーションを起動するようにする。

V_CHKREF 0x8888

vid で指定した仮身の参照する実身 ( リンクファイルの場合は参照先の実身 ) が他の仮身からも参照されているか否かをチェックする。

V_CHKDUP 0x9999

vid で指定した仮身の参照するファイル ( リンクファイルの場合はリンクファイルそのもの ) が他の仮身からも参照されているか否かをチェックする。

または、以下の組み合わせで指定した属性に変更する。

V_NONAME 0x0001-- 実身名の表示なし
V_NORELN 0x0002-- 続柄名の表示なし
V_NOTYPE 0x0004-- データタイプの表示なし
V_NOTIME 0x0008-- 変更日時の表示なし
V_FIXDEF 0x0010-- 固定デフォルトアプリ
V_NOIMG 0x0020-- イメージ保存なし
V_NOPICT 0x0040-- ピクトグラム表示なし
V_NOFDISP0x0080-- 仮身枠表示なし
V_NOEXPND0x0200-- 印刷時展開なし
V_AUTEXE 0x4000-- 自動起動

【リターン値】

≧0    正常 (変更前の属性/状態)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の状態を mode で指定した内容に変更し、 変更前の状態を関数値として戻す。 vid < 0 の場合は、- vid で指定した値をウィンドウ ID とみなして、 そのウィンドウ / パネル上に登録されているすべての仮身の状態を変更する (ただし、wid < 0 で登録した仮身に対しては適用できない)。

関数値としては V_CHKREF, V_CHKDUP 指定の場合を除いて、 vid ≧ 0 のときは仮身の属性 / 状態ワード全体が戻され、 vid < 0 のときは "0" が戻る。 変更に伴う再表示は一切行なわれない。 V_GETSTS 指定の場合は vid < 0 指定は意味を持たない。

V_CHKREF, V_CHKDUP 指定の場合、 vid ≧ 0 のときは、 他からも参照されているとき "1"、 参照されていないとき "0" が戻る。 vid < 0 のときは何にもせずに "0" を戻す。

付箋の場合は、V_GETSTS, V_NONAME, V_NOTYPE, V_AUTEXE のみ適用され、 他は、EX_PAR のエラーとなる。 関数値として戻される値は、FUSENSEGpict ワードの内容となる。

仮身、付箋とも、関数値として戻される属性のうち隠蔽属性ビットは実際の属性と無関係に常に "0" となる。

【エラーコード】

EX_PAR      : パラメータが不正である(mode が不正)。
EX_VID      : 仮身ID(vid)は存在していない。
osta_prc
 
仮身の実行処理の開始

【形式】

ERR osta_prc(W vid, W wid)

【パラメータ】

W   vid     仮身 ID
W   wid     ウィンドウ ID

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

実身 / 仮身マネージャから仮身のオープン起動で起動されたアプリケーション ( 小物アプリケーションを含む ) は、 起動されてウィンドウを開いた後、 必ずこの関数を実行して処理の開始を知らせなくてはならない。

vid は、実身 / 仮身マネージャから渡される起動メッセージ ( M_EXECREQ 構造体 ) の中の対象仮身 ID ( vid ) を指定する。

wid は、アプリケーションがオープンしたウィンドウのウィンドウ ID を指定する。 ウィンドウを開かず、単にパネルのみを使用するアプリケーション ( 小物アプリケーションを含む ) では、 オープンしたパネルのパネル ID を指定する。

小物アプリケーションでないアプリケーションの起動の場合、 vid で指定した仮身を処理中状態とし、 wid で指定したウィンドウをその対象ウィンドウとする。 この時点で、仮身の表示は処理中状態の表示に変化し、 以後は、その仮身の移動 / 変形に伴って、 wid で指定したウィンドウの親ウィンドウ / 生成元が自動的に変更される。

小物アプリケーションの起動の場合、表示上の変化は発生せず、 単に実身 / 仮身マネージャで内部的に管理している vid で指定した ID に対して wid で指定したウィンドウをその対象ウィンドウとする内部処理が行なわれることになる。

小物アプリケーションの場合は、wid として 負の値を指定することにより、 同一小物の多重起動を許すようにすることができる。 そうでない場合は、多重起動はすでに起動されている同一の小物ウィンドウへの切り替えとなる。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_PAR      : パラメータが不正である(小物以外で wid≦0)。
EX_VID      : 仮身ID (vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(付箋)。
oend_prc
 
仮身の実行処理の終了

【形式】

GID oend_prc(W vid, VP dat, W update)

【パラメータ】

W   vid     仮身 ID
VP  dat     処理結果の状態を保存した付箋の固有データへのポインタ
W   update  対象ファイルの更新状態を通知
        =0 : 実身は更新されていない。
        >0 : 実身は更新されているが、実行メニューの更新は不要。
        <0 : 実身は更新されており、実行メニューの更新も必要。

【リターン値】

≧0    正常 (開いた仮身の表示用描画環境 ID または 0)
<0    エラー (エラーコード)

【解説】

実身 / 仮身マネージャから仮身のオープン起動で起動されたアプリケーション ( 小物アプリケーションを含む ) は、 処理を終了した後、ウィンドウ ( またはパネル ) を閉じる前に、 必ずこの関数を実行して終了を知らせなくてはならない。

アプリケーションは、osta_prc() を実行しなかった場合でも、 oend_prc() は必ず実行しなくてはならない。

処理対象のファイルを更新する必要がある場合には、 この関数を実行する前にファイルの更新を行ない、 クローズしておく必要がある。

vid は、実身 / 仮身マネージャから渡される起動メッセージ ( M_EXECREQ 構造体 ) の中の対象仮身 ID ( vid ) を指定する。

小物アプリケーションでないアプリケーションの起動の場合、 vid で指定したウィンドウを対象とした仮身の処理中状態を解除し、 通常状態とする。この時点で、仮身の表示は通常状態の表示に変化する。

小物アプリケーションの起動の場合、 表示上の変化は発生せず、 単に 実身 / 仮身マネージャで内部的に管理している vid で指定した ID に対する内部処理が行なわれることになる。

dat は処理結果の状態を保存した付箋の固有データへのポインタであり、 最初のハーフワードが続くデータのバイト数を示す。 この固有データは指定した仮身に付随するデータとして保存されることになる。 NULL の場合は保存すべき固有データはないことを意味する。

関数値として、元の仮身が開いている場合は、 その表示エリアの表示のための描画環境 ID ( gid > 0 ) が戻されるので、 その描画環境ID ( gid ) に対して開いた仮身の内容の描画を行なう必要がある。 描画領域は描画環境のフレーム長方形となる。 開いた仮身の表示が不要の場合は、関数値 "0" が戻る。

付箋の場合は、update≠ 0 のとき、 dat で指定した付箋の固有データの更新を意味する。

【エラーコード】

EX_ADR      : アドレス(dat)のアクセスは許されていない。
EX_VID      : 仮身ID (vid)は存在していない。
oend_req
 
仮身の要求処理の終了

【形式】

ERR oend_req(W vid, W stat)

【パラメータ】

W   vid 仮身ID
W   stat    処理状態
            = 0: 正常終了
            ≠ 0: 異常終了

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

実身 / 仮身マネージャから仮身の表示起動または貼り込み起動で起動されたアプリケーションは、 処理を終了した後、必ずこの関数を実行して終了を知らせなくてはならない。

vid は、実身/仮身マネージャから渡される起動メッセージの中の対象仮身ID ( vid ) を指定する。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_VID      : 仮身ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(付箋)。
oreq_prc
 
仮身要求イベントの送信

【形式】

W   oreq_prc(W wid, W req, B *resp)

【パラメータ】

W   wid     ウィンドウ ID
W   req     仮身要求イベント
B   *resp   応答の格納場所

【リターン値】

≧0    正常 (応答状態)
<0    エラー (エラーコード)

【解説】

wid で指定したウィンドウの管理プロセスに対して、 req で指定した仮身要求イベントを送信し、 その応答を resp で指定した領域に格納する。 resp は要求に対する応答を格納できるだけの十分な大きさがなくてはいけない。

送信される仮身要求イベントの要求タイプは、 req で指定した値に + 128 された値となる。

関数値として、送信先から応答として戻された応答状態が戻る。 正常応答を ≧ 0 とし、エラー応答を < 0 とする。

【エラーコード】

EX_ADR      : アドレス(resp)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(req < 0)。
EX_WID      : ウィンドウ(wid)は存在していない。
E(X)_xxx    : 送信先から戻されたエラー応答
orsp_prc
 
仮身要求イベントの応答

【形式】

ERR orsp_prc(EVENT *evt, B *resp, UW size, W status)

【パラメータ】

EVENT   *evt    仮身要求イベント
B       *resp   応答情報
UW      size    応答情報を取り出すサイズ
W       status  応答状態として相手に戻す状態

【リターン値】

=0     正常
<0    エラー (エラーコード)

【解説】

evt で指定した仮身要求イベントに対して、 resp で指定した領域に格納されている size バイトの情報を応答として戻す。

status は、応答状態として相手に戻す状態であり、 正常応答を ≧ 0 とし、エラー応答を < 0 とする。

【エラーコード】

EX_ADR      : アドレス(evt,resp)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(evt の内容が不正)。
oput_dat
 
仮身への貼り込み

【形式】

ERR oput_dat(W vid)

【パラメータ】

W   vid 仮身 ID

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の参照する実身に、 トレーに格納されているデータを貼り込む。

データの貼り込みは、仮身のデフォールトアプリケーションを起動して行ない、 貼り込みが正常に行なわれた場合は、 関数値 "0" が戻り、データの貼り込みが行なわれなかった場合は、 デフォールトアプリケーションから戻されたエラーコードがそのまま関数値として戻る。

指定した仮身が虚身状態の場合は、EX_VOBJ のエラーとなる。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(付箋)。
E(X)_xxx    : 貼り込み先のアプリケーションからのエラーコード
oupd_fil
 
ファイル更新の通知

【形式】

ERR oupd_fil(W vid, LINK *lnk, W update)

【パラメータ】

W       vid 仮身ID
LINK    *lnk    リンク
W       update   実行メニューの更新の必要性を指定
                 ≧ 0 : ファイルは更新されているが、実行メニューの更新は不要。
                 < 0 : ファイルは更新されており、実行メニューの更新も必要。

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid または lnk で指定したファイルを更新したことを通知する。 vid ≠ 0の場合は、vid で指定した仮身の参照するファイルの更新を通知し、 vid = 0 の場合は、lnk で指定したファイルの更新を意味する。 vid ≠ 0 の場合は、lnk の値は参照されないのでどんな値でも構わない。

仮身からウィンドウを開いて、 対象のファイルを更新した場合は、 この関数で更新を通知する必要はなく、 対象ファイル以外を更新した場合に、この関数を実行する必要がある。 更新されたファイルが「小物入れ」ファイルの場合、小物メニューは自動的に更新される。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(付箋)。
oset_tmf
 
小物メニューファイルの設定

【形式】

ERR oset_tmf(LINK *lnk)

【パラメータ】

LINK    *lnk    「小物入れ」へのリンク

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

lnk で指定したファイルを「小物入れ」ファイルとして設定し、 小物メニューを更新する。lnk = NULL の場合は、 小物メニューを再生成することを意味する。

インプリメントによっては、 指定したファイルと別デバイスのルートファイル直下の同一名称のファイルも自動的に 「小物入れ」ファイルとみなす場合もある。

システム立上げ時には、小物メニューは不能状態となっているため、 ユーザ環境の初期化時に必ず、この関数を実行して小物メニューを有効とする必要がある。

lnk で指定したファイルは存在しない場合、 アクセスできない場合、 または機能付箋が 1 つも存在しない場合には、 小物メニューは不能状態となる。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
oget_men
 
仮身のメニュー項目の取り出し

【形式】

ERR oget_men(W vid, TC **emenu, TC **tmenu, TC **vmenu, TC **fmenu)

【パラメータ】

W   vid         仮身 ID
TC  **emenu     実行メニューの項目リストポインタの格納場所
TC  **tmenu     小物メニューの項目リストポインタの格納場所
TC  **vmenu     仮身操作メニューの項目リストポインタの格納場所
TC  **fmenu     付箋操作メニューの項目リストポインタの格納場所

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

実行メニュー、小物メニュー、仮身操作メニュー、付箋操作メニューの項目リストを共有メモリ領域に生成し、 項目リストへのポインタを、それぞれ emenu, tmenu, vmenu, fmenu で指定した領域に格納する。 emenu, tmenu, vmenu, fmenu のいずれかが NULL の場合は対応するポインタが格納されない。

vid の指定により以下に示すメニュー項目が取り出される。

vid > 0

vid で指定した単独の仮身または付箋に適用される実行 / 仮身操作 / 付箋操作メニューが取り出される。

仮身操作 / 付箋操作メニューのいずれかは常に不能状態となる。 仮身操作メニューには指定した仮身の状態が反映される。

< 0

不能状態の実行 / 仮身操作 / 付箋操作メニューが取り出される。

= 0

不能状態の実行メニュー、共通項目のみの仮身操作メニュー、 付箋操作メニューが取り出される。

= 0x4000

不能状態の実行/付箋操作メニュー、 共通項目のみの仮身操作メニューが取り出される。

= 0x4001

不能状態の実行/仮身操作メニュー、付箋操作メニューが取り出される。

取り出されるメニュー項目は動的に変化する可能性があるため、 基本的にアプリケーションはメニュー表示の直前に、 選択状態に対応した vid を指定してこの関数を実行する必要がある。

【エラーコード】

EX_ADR      : アドレス(emenu,tmenu,vmenu,fmenu)のアクセスは許されていない。
EX_NOSPC    : システムのメモリ領域が不足した。
EX_VID      : 仮身 ID (vid)は存在していない。
oget_vmn
 
仮身のメニュー項目の分割取り出し

【形式】

ERR oget_vmn(W vid, TC **emenu, TC **tmenu, TC **vmenu, TC **omenu,
             TC **dmenu, TC **fmenu)

【パラメータ】

W   vid         仮身 ID
TC  **emenu     実行メニューの項目リストポインタの格納場所
TC  **tmenu     小物メニューの項目リストポインタの格納場所
TC  **vmenu     仮身操作メニューの項目リストポインタの格納場所
TC  **omenu     実身操作メニューの項目リストポインタの格納場所
TC  **dmenu     ディスク操作メニューの項目リストポインタの格納場所
TC  **fmenu     付箋操作メニューの項目リストポインタの格納場所

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

実行メニュー、小物メニュー、仮身操作メニュー、実身操作メニュー、ディスク操作メニュー、 付箋操作メニューの項目リストを共有メモリ領域に生成し、 項目リストへのポインタを、それぞれ emen, tmen,vmen, omen, dmen, fmen で指定した領域に格納する。 指定した領域ポインタが NULL の場合は対応するポインタが格納されない。

oget_men() と基本的に同様の機能であるが、 oget_men() で取り出す仮身操作メニューの内容が、 仮身操作、実身操作、ディスク操作の 3 つのメニューに分割されて取り出される。

【エラーコード】

EX_ADR      : アドレス(emen,tmen,vmen,omen,dmen,fmen)
              のアクセスは許されていない。
EX_NOSPC    : システムのメモリ領域が不足した。
EX_VID      : 仮身 ID(vid)は存在していない。
oexe_vmn
 
仮身/付箋操作メニューの実行

【形式】

W   oexe_vmn(W vid, W item, VP buf)

【パラメータ】

W   vid     仮身 ID
W   item    項目番号
VP  buf     操作に対応した情報が戻される

【リターン値】

≧0    正常 (操作タイプ)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身 / 付箋に対する仮身 / 付箋操作メニューで、 item で指定した項目番号に対応する処理を実行する。 item の値により以下の意味を持つ。

item > 0x100

oget_men(), oget_vmn() で取り出した付箋操作メニュー

item の下位バイトは付箋操作メニューの子項目番号

item ≧ 0

oget_men() で取り出した仮身操作メニュー

item は仮身操作メニューの子項目番号
item < 0

oget_vmn() で取り出した仮身 / 実身 / ディスク操作メニュー

N :
N は仮身操作メニューの子項目番号
(0x100 + N):
N は実身操作メニューの子項目番号
(0x200 + N):
N はディスク操作メニューの子項目番号

vid ≦ 0 の場合は、複数の仮身に対する操作を意味し、 buf で指定した領域には、 操作の対象となる仮身 ID の配列が入る。 配列の最後は "0" で終わっていなくてはいけない。 関数値として操作の種類を示す以下の値が戻される。 この値は、仮身 / 付箋操作メニューの項目番号とは無関係である。 また、buf で指定した領域には、操作に対応した情報が戻される。

関数値buf の内容
VM_NONE ( 0): 何も変更されなかった
VM_OPEN ( 1): 仮身が開かれた 新しい仮身領域 ( RECT )
VM_CLOSE ( 2): 仮身が閉じられた 新しい仮身領域 ( RECT )
VM_NAME ( 3): 実身名が変更された
VM_RELN ( 4): 続柄が変更された 新しい続柄インデックス
VM_NEW ( 5): 新版が作成された 新版を参照する仮身 ID
VM_DETACH( 6): 切断状態となった
VM_DISP ( 7): 表示属性が変更された 新しい仮身領域 ( RECT )
VM_REFMT ( 8): 再フォーマットされた
VM_PASTE ( 9): 仮身へ埋込まれた アプリケーションからのリターン値
VM_EXREQ (10): 付箋起動が要求された
VM_ATTACH(11): 接続状態となった
VM_APLREG(12): アプリ登録された
VM_APLDEL(13): アプリ登録が削除された
VM_INFO (14): 管理情報が表示された
VM_DISK (15): ディスク状態が表示された
VM_GABAGE(16): ディスク整理が起動された

vid ≦ 0 の場合は、 buf には、実際に操作が行なわれて状態が変化した仮身 ID とその結果の値がペアで戻され、 最後は 仮身 ID = 0 で終わる。 エラーが発生したり、何も変更されなかった仮身に対しては、 その仮身 ID は戻されない。

   例:実行時:             W       仮身ID-1
                            :  :
                            W       仮身ID-n
                            W       0
       実行終了時:
        VM_OPEN のとき:    W       仮身ID-1
                            RECT    1 の新しい仮身領域
                            :  :
                            W       仮身ID-n
                            RECT    n の新しい仮身領域
                            W       0

        VM_NAME のとき:    W       仮身ID-1
                            :  :
                            W       仮身ID-n
                            W       0

        VM_NEW のとき:     W       仮身ID-1
                            W       1 の新版を参照する仮身ID
                            :  :
                            W       仮身ID-n
                            W       n の新版を参照する仮身ID
                            W       0

buf は、vid > 0 の場合は、 sizeof ( RECT ) の大きさを持つ必要があり、 vid ≦ 0 の場合は、 (仮身の数)×(sizeof(RECT) + sizeof(W)) + sizeof(W) の大きさを持つ必要がある。

関数値が VM_NONE、VM_NEW、VM_EXREQ、VM_ATTACHVM_GABAGE 以外の場合は、 指定した仮身の再表示を行なう必要がある。 VM_NEWの場合は、新版を参照する仮身が新規に生成されたため、 その仮身を自ウィンドウ内に追加して表示する必要がある。

関数値が VM_ATTACHVM_GABAGE の場合は、 通常は何もする必要がない。

VM_EXREQ は付箋操作メニューの「起動」が指定されたことを示す。 この関数内では付箋の実行は行なわないため、oexe_apg() により付箋の実行を行なう必要がある。

指定した仮身に対しては仮身要求イベントは送信されないが、 指定した以外の仮身の表示の変更が必要な場合は、その仮身に対して仮身要求イベントが送信される。

vid ≧ 0 の場合、適用されないメニュー項目を指定された場合は、 EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(buf)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(item が不正)。
EX_VID      : 仮身 ID(vid)は存在していない(vid > 0 のとき)。
EX_VOBJ     : 仮身の状態/属性が不適当(付箋)。
EX_xxx      : 対応する関数から戻されたエラー(vid > 0 のとき)
ochg_env
 
実行環境ファイルの変更

【形式】

W   ochg_env(LINK *lnk, W wid)

【パラメータ】

LINK    *lnk    実行環境ファイルへのリンク
W       wid     ウィンドウ ID

【リターン値】

≧0    正常 (実行環境ファイルのスタックレベル(0: 無))
<0    エラー (エラーコード)

【解説】

lnk で指定したファイルを現在の実行環境ファイルとして設定し、 wid で指定したウィンドウを実行環境ウィンドウとする。 lnk で指定したファイルの存在、及び wid で指定したウィンドウの存在はチェックされない。

実行環境ファイル / ウィンドウを設定した場合、 以前の実行環境ファイル / ウィンドウはスタック内に保存される。

指定したファイルが以前の実行環境ファイルとして定義されている場合は、 スタック内に保存されている以前の定義は自動的に削除される。

lnk = NULL の場合で、 wid ≦ 0 または指定した wid が現在の実行環境ウィンドウである場合はスタック内に保存されている直前の実行環境ファイルに戻す。

lnk = NULL の場合で、指定した wid が現在の実行環境ウィンドウでない場合は、 指定した wid がスタック内に保存されていればその定義を削除する。 この場合、実行環境ファイルは変更されない。

実行環境ウィンドウとして定義されているウィンドウが削除された場合は、 自動的にスタック内の定義が削除され、場合によっては直前の実行環境ファイルに切り換わる。

システム立上げ時には、実行環境ファイルは未定義となっているため、 ユーザ環境の初期化時に必ず、この関数を実行して実行環境ファイルを設定する必要がある。

関数値として実行環境ファイルのスタックレベルが戻る。 "0" の場合は実行環境ファイルが未定義であることを意味する。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_LIMIT    : システムの制限を越えた(実行環境ファイルの数が多すぎる)。
oget_env
 
実行環境ファイルの取り出し

【形式】

WID oget_env(LINK *lnk)

【パラメータ】

LINK    *lnk    実行環境ファイルへのリンク

【リターン値】

≧0    正常 (実行環境ウィンドウ ID)
<0    エラー (エラーコード)

【解説】

現在の実行環境ファイルを取り出し、 lnk で指定した領域に格納し、 実行環境のウィンドウ ID を関数値として戻す。 lnkNULL のときは、実行環境ファイルは取り出さない。

実行環境ファイルが未定義である場合は、EX_NOEXS のエラーとなる。

【エラーコード】

EX_ADR : アドレス(lnk)のアクセスは許されていない。
EX_NOEXS : 実行環境ファイルは未定義。
oreg_apg
 
アプリケーションプログラムの登録

【形式】

ERR oreg_apg(LINK *lnk)

【パラメータ】

LINK    *lnk    アプリケーションプログラムへのリンク

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

lnk で指定したファイルを、 そのファイルが属するファイルシステム内のルートファイル直下に存在するアプリケーション登録ファイルにアプリケーションプログラムとして登録し、 同時にアプリケーションのデータタイプ名も格納する。 登録すべきファイルシステムは接続されていなくてはいけない。

指定したファイルがアプリケーションプログラムの形式でない場合、 およびアプリケーション ID のデータタイプ ID が (0, 0) の場合は、 EX_PAR のエラーとなる。 また、既に同一ファイルが登録されていた場合は、EX_EXS のエラーとなる。

同一のアプリケーション ID を持つ異なるアプリケーションプログラムが複数登録されていた場合は、 実行時にどれを実行するかを選択することになる。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_EXS      : 既に同一ファイルが登録されていた。
EX_PAR      : パラメータが不正である
              (アプリケーションプログラム形式ではない、データタイプ ID が 0)。
odel_apg
 
アプリケーションプログラムの登録削除

【形式】

ERR odel_apg(LINK *lnk)

【パラメータ】

LINK    *lnk    アプリケーションプログラムへのリンク

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

lnk で指定したファイルを、 そのファイルが属するファイルシステム内のアプリケーション登録ファイルからアプリケーションプログラムとしての登録を削除し、 同時にアプリケーションのデータタイプ名も削除する。 登録削除すべきファイルシステムは接続されていなくてはいけない。

登録を削除するだけで、 アプリケーションプログラム自体が削除されることはない。

指定したファイルがアプリケーションプログラムとして登録されていなかった場合はエラーとなる。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_NOEXS    : アプリケーションは登録されていない。
oset_sea
 
検索対象ファイルシステムの設定

【形式】

W   oset_sea(W cnt, LINK *lnk)

【パラメータ】

W       cnt     リンクの個数
LINK    *lnk    リンク配列

【リターン値】

≧0    正常 (検索対象ファイルシステム数)
<0    エラー (エラーコード)

【解説】

lnk で指定したファイルの属するファイルシステムをアプリケーションプログラムの検索対象として設定する。 lnk で指定したファイルシステムの存在はチェックされない。

lnkは、 cnt で指定した要素数のリンク配列へのポインタであり、 要素の順番に検索対象とする。

アプリケーションプログラムの検索は、 まず現在の実行環境ファイルの存在するファイルシステムに対して行なわれ、 その次に設定したファイルシステムを順番に検索することになる。 cnt = 0 または、 lnk = NULL の場合は、 現在の実行環境ファイルの存在するファイルシステムのみを検索対象とすることを意味する。

関数値として、設定した結果としての検索対象ファイルシステムの数を戻す。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_LIMIT    : システムの制限を越えた(検索対象ファイルシステムの数が多すぎる)。
EX_PAR      : パラメータが不正である(cnt < 0)。
oget_sea
 
検索対象ファイルシステムの取り出し

【形式】

W   oget_sea(W cnt, LINK *lnk)

【パラメータ】

W       cnt     lnk の要素数
LINK    *lnk    リンク配列

【リターン値】

≧0    正常 (検索対象ファイルシステム数)
<0    エラー (エラーコード)

【解説】

現在の検索対象ファイルシステムを取り出し、 そのファイルシステムのルートファイルへのリンクを、 lnk で指定した領域に格納する。関数値として現在、 検索対象ファイルシステムとして設定されているファイルシステム数を戻す。

cntlnk で指定した配列領域の要素数であり、 検索対象ファイルシステムの数が cnt で指定した値より大きい場合は、 lnk で指定した領域には cnt 個のリンクのみ戻されるが、 関数値は全体の数が戻る。

現在の実行環境ファイルの存在するファイルシステムのみが検索対象の場合は、 関数値として "0" が戻り、lnk には何も設定されない。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(cnt < 0)。
ofnd_apg
 
アプリケーションプログラムの検索

【形式】

W   ofnd_apg(VLINK *vlnk, LINK *lnk, TC *dtype, W cnt)

【パラメータ】

VLINK   *vlnk   仮身(リンク)
LINK    *lnk    検索したリンクを格納する配列
TC      *dtype  データタイプを格納する配列
W       cnt     検索個数

【リターン値】

≧0    正常 (格納したアプリケーションの数)
<0    エラー (エラーコード)

【解説】

vlnk で指定した条件に適合するアプリケーションプログラムを cnt で指定した個数だけ検索し、 見つかったアプリケーションのリンクを lnk で指定した領域に、そのデータタイプ名を dtype で指定した領域に格納する。 lnk, dtype がそれぞれ NULL の場合は格納されない。

lnk は、cnt 個の LINK 構造体配列へのポインタであり、 dtypecnt × 32 バイトの領域へのポインタである。 データタイプ名が 32 バイトに満たない場合は後ろに "0" が詰められる。

検索の条件は以下に示すものとなる。

vlnk->fs_name[0] ≠ 0 のとき :

fs_name で指定したファイルシステム内のみを検索する。 接続されていない場合は、ファイル管理の E_NOFS エラーが戻る。

vlnk->fs_name[0] = 0 のとき :

実行環境ファイルの存在するファイルシステム、 次に、設定されている検索対象ファイルシステム全体を順番に検索する(接続されていないものは除かれる)。 これは、oexe_apg() で検索される条件に等しい。

vlnk->appl[0][1] ≠ 0 のとき :

vlnk->appl[0][1][2] で指定したアプリケーション ID を持つアプリケーションを検索する。

vlnk->appl[0][1] = 0 のとき:

すべてのアプリケーションを検索する。

関数値として、見つかったアプリケーションの数を戻す。 "0" の場合は、アプリケーションは存在しないことを意味する。 検索は、最大 cnt 個のアプリケーションが見つかった時点で終了するため、 関数値 ≦ cnt となる。

【エラーコード】

EX_ADR      : アドレス(vlnk,lnk,dtype)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(cnt ≦ 0)。
oexe_apg
 
アプリケーションプログラムの実行

【形式】

W   oexe_apg(W vid, W item)

【パラメータ】

W   vid     仮身 ID
W   item    アプリケーションの番号

【リターン値】

≧0    正常 (起動したプロセス ID (または 0))
<0    エラー (エラーコード)

【解説】

vid で指定した仮身に対して item の下位バイトで指定したアプリケーションを起動し、 関数値として起動したアプリケーションのプロセス ID を戻す。 item の上位バイトは無視される。

アプリケーションの起動は、vid の値により以下の意味となる。

vid > 0 :

item は、vid で指定した仮身の実行メニューの項目番号であり、 item の下位バイト = 0 の場合はデフォールトアプリケーションの起動を意味する。

vid ≦ 0 :

item は、小物メニューの項目番号であり、小物アプリケーションの起動となる。

仮身が既に処理中状態の場合、 もしくは小物アプリケーションが既に実行中の場合は、 item の値に無関係に対応するウィンドウに入力受付状態が切り換えられ、 関数値として "0" が戻る。 ただし、実行中の小物アプリケーションが多重起動を許している場合は、 新規に小物アプリケーションが実行される( osta_prc() を参照のこと)。

vid で指定した仮身が虚身状態の場合、 「デバイス接続パネル」によりデバイスの接続を求める。 接続された後、デフォールト起動のときはアプリケーションが起動されるが、 デフォールト起動でないときは接続のみ行なわれて関数値として "0" が戻る。

起動すべきアプリケーションが複数存在する場合は、 最新の更新日時のアプリケーションを起動するか、 「アプリケーション選択パネル」を表示して、 起動するアプリケーションを選択するかはインプリメントに依存する。 「アプリケーション選択パネル」を表示して、選択が取り消された場合は、 EX_NOEXS のエラーとなる。

起動に際して何らかのエラーが発生した場合は、 その旨を示すエラーパネルが表示された後にエラーリターンする。 ただし、インプリメントによっては、起動すべきアプリケーションが見つからなかった場合に、 アプリケーションの機能付箋名をパネルに表示して、 アプリケーションの入ったデバイスの接続を要求する場合もある。 この場合、デバイスの接続が行なわれた後にアプリケーションが起動され、 デバイスの接続が取り消された場合は、EX_NOEXS のエラーとなる。

付箋の場合、item の下位バイトが "0" でない場合は、EX_PAR のエラーとなる。

【エラーコード】

EX_NOEXS    : アプリケーションは登録されていない、起動が取り消された。
EX_PAR      : パラメータが不正である(item が不正)。
EX_VID      : 仮身 ID(vid)は存在していない。
odet_fls
 
ファイルシステムの切断

【形式】

ERR odet_fls(TC *dev, W eject)

【パラメータ】

TC  *dev    デバイス名
W   eject   イジェクト指定

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

dev で指定したディスクデバイス上のファイルシステムをシステムから切り離す。 eject ≠ 0 の場合は切り離した後、 ファイルシステムの媒体をイジェクトして物理的に取り外す。 イジェクトが不可能なデバイスの場合はこの指定は無視される。

この関数は、OS 核の det_fls() と同一の機能であるが、 実身 / 仮身マネージャでデバイスの接続管理を正しく行なうために、 基本的にアプリケーションは、det_fls() の代りに odet_fls() を使用しなくてはいけない。

【エラーコード】

EX_ADR      : アドレス(dev)のアクセスは許されていない。
ofdt_fls
 
ファイルシステムの切断(強制)

【形式】

ERR ofdt_fls(TC *dev, W eject)

【パラメータ】

TC  *dev    デバイス名
W   eject   イジェクト指定

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

odet_fls() と完全に同一の機能であるが、 実身 / 仮身マネージャでの他のシステムコールを実行中であっても、 待たされずに強制的に処理を行う。

【エラーコード】

EX_ADR      : アドレス(dev)のアクセスは許されていない。
ER_BUSY     : ビジー状態のため切断できない。
oatt_fls
 
ファイルシステムの接続

【形式】

ERR oatt_fls(TC *dev, TC *name, LINK *lnk, W ronly)

【パラメータ】

TC      *dev    デバイス名
TC      *name   接続名
LINK    *lnk    リンク
W       ronly   読みだし専用指定

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

dev で指定した名前のディスクデバイス上に存在するファイルシステムを、 name で指定した接続名により、システムに接続する。

name は、接続したファイルシステムを一意的に区別するために使用される任意の名前であり、 先頭から 8 文字までが適用される。既に接続済みの接続名と同じであってはいけない。 この接続名は、接続したファイルシステムのルートファイルを絶対バス名により指定するために使用される。

lnk は、接続したファイルシステムのルートファイルへのリンクが格納される領域であり、 lnk = NULL の場合は格納されない。

r_only ≠ 0 の場合は、書き込み不可のファイルシステムとして接続される。 この場合、そのファイルシステム内のいかなる書き込みも禁止される。

この関数は、OS 核の att_fls() と同一の機能であるが、 実身 / 仮身マネージャでデバイスの接続管理を正しく行なうために、 基本的にアプリケーションは、att_fls() の代りに oatt_fls() を使用しなくてはいけない。

【エラーコード】

EX_ADR      : アドレス(dev,name,lnk)のアクセスは許されていない。
ofat_fls
 
ファイルシステムの接続(強制)

【形式】

ERR ofat_fls(TC *dev, TC *name, LINK *lnk, W ronly)

【パラメータ】

TC      *dev    デバイス名
TC      *name   接続名
LINK    *lnk    リンク
W       ronly   読みだし専用指定

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

oatt_fls() と完全に同一の機能であるが、 実身 / 仮身マネージャでの他のシステムコールを実行中であっても、 待たされずに強制的に処理を行う。

【エラーコード】

EX_ADR      : アドレス(dev,name,lnk)のアクセスは許されていない。
ER_BUSY     : ビジー状態のため接続できない。
odet_vob
 
仮身の切断

【形式】

W   odet_vob(W vid, TC *dev)

【パラメータ】

W   vid 仮身ID
TC  *dev    デバイス名

【リターン値】

=0    正常 (切断済み)
=1    正常 (切断した)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の示す実身の存在するファイルシステム、 または dev で指定した名前の論理デバイス上のファイルシステムを切断する。

vid > 0 の場合は、vid の指定が有効となり dev は無視されるが、 dev≠NULL で実際に切断された場合は、 切断された論理デバイス名が dev に戻される。 vid ≦ 0 の場合には dev が有効となり、 dev が空文字列の場合は、特別にシステムデバイスの切断を意味し、 dev には論理デバイス名が戻される。dev で指定した領域は 8 + 1 文字の領域が確保されていなくてはいけない。

イジェクト可能なメディアの場合は、同時にイジェクトされる。

既に切断されている場合は何もせずに関数値 "0" を戻す。

切断した場合は関数値 "1" を戻し、 切断したファイルシステム内の登録された全ての仮身を虚身状態とし、 これらの仮身が登録されたウィンドウの管理プロセスに対して仮身要求イベント(虚身移行)を送信する ( vid で指定した仮身に対しても送信される)。

処理中状態の仮身に対しては、その仮身から開かれたウィンドウの管理プロセスに対して仮身要求イベント ( 虚身ウィンドウ移行 ) を送信する。 この場合、そのウィンドウのタイトル表示は自動的に虚身ウィンドウ表示に変更される。 虚身ウィンドウ内に含まれる仮身に対しては、 仮身要求イベント ( 虚身移行 ) は送信されないため、 虚身ウィンドウ移行の仮身要求イベントを受信した場合は、 基本的にそのウィンドウ内の全ての仮身の再表示を行なう必要がある。

切断したファイルシステムは自動的に検索対象ファイルシステムから削除される。 また、必要に応じて小物メニューが自動的に更新される。

切断できない場合は、その旨のエラーパネルが表示された後にエラーリターンする。

付箋の場合は、EX_VOBJ のエラーとなり、エラーパネルは表示されない。

【エラーコード】

EX_ADR      : アドレス(dev)のアクセスは許されていない。
EX_VID      : 仮身 ID (vid)は存在していない。
EX_VOBJ     : 仮身の状態 / 属性が不適当(付箋)。
oatt_vob
 
仮身の接続

【形式】

W   oatt_vob(W vid, W ronly)

【パラメータ】

W   vid     仮身 ID
W   ronly   読みだし専用指定

【リターン値】

=0    正常 (取り消し)
=1    正常 (接続済み)
=2    正常 (接続した)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の示す実身の存在するファイルシステムを接続する。 r_only≠0 の場合は、書込不可のファイルシステムとして接続する。 接続名はシステムディスクの場合は"SYS" であり、他の場合は論理デバイス名と同じ名前となる。

接続すべきファイルシステムがイジェクト可能なメディアの場合は、 ディスクの挿入を求めるパネルを表示する。 挿入が取り消された場合は何もせず関数値 "0" を戻す。

既に接続済みの場合は何もせずに関数値 "1" を戻す。 この場合、r_only のパラメータは無視される。

接続した場合は関数値 "2" を戻し、 接続したファイルシステム内の登録されたすべての仮身の虚身状態を解除し、 虚身が登録されたウィンドウの管理プロセスに対して仮身要求イベント ( 虚身解除 ) を送信する ( vid で指定した仮身に対しても送信される )。

処理中状態の虚身に対しては、 その虚身から開かれたウィンドウの管理プロセスに対して仮身要求イベント ( 虚身ウィンドウ解除 ) を送信する。 この場合、そのウィンドウのタイトル表示は自動的に通常ウィンドウ表示に変更される。 虚身ウィンドウ内に含まれる仮身に対しては、 仮身要求イベント ( 虚身解除 ) は送信されないため、 虚身ウィンドウ解除の仮身要求イベントを受信した場合は、 基本的にそのウィンドウ内の全ての仮身の再表示を行なう必要がある。

接続したファイルシステムは自動的に検索対象ファイルシステムの最後に追加される。 また、必要に応じて小物メニューが自動的に更新される。

接続できない場合は、その旨のエラーパネルが表示された後にエラーリターンする。

付箋の場合は、EX_VOBJ のエラーとなり、エラーパネルは表示されない。

【エラーコード】

EX_VID      : 仮身ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(付箋)。
oprc_dev
 
デバイス挿入イベント処理

【形式】

ERR oprc_dev(EVENT *evt, TC *dev, W ronly)

【パラメータ】

EVENT   *evt    デバイスイベント
TC      *dev    デバイス名
W       ronly   読みだし専用指定

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

evt で指定したデバイスイベント ( ディスク挿入イベント ) に従って、 挿入されたデバイス上のファイルシステムを接続する。 r_only ≠ 0 の場合は、 書込不可のファイルシステムとして接続する。 接続名はシステムディスクの場合は "SYS" であり、 他の場合は論理デバイス名と同じ名前となる。

evt がデバイスイベントでない場合は、 EX_PAR のエラーとなるが、 ディスク挿入イベント以外のデバイスイベントの場合は、何もせずに正常リターンする。

evt = NULL の場合は、 dev で指定した論理デバイスの接続となる。

デバイスが未フォーマットまたは標準形式でない場合の対応は、 デバイスの種別やインプリントによって異なってくる。 フロッピーディスクの場合は、通常、その旨のパネルを表示し、 フォーマットや対応アプリケーションの実行を選択し、 フォーマットした場合は、 フォーマット後のファイルシステムを接続し、 取り消した場合は、接続せずにエラーリターンする。

既に同一のファイルシステム名のデバイスが接続されている場合は、 その旨のパネルを表示し、ファイルシステム名の変更を求める。 変更した場合は接続が行なわれ、 変更を取り消した場合は、接続せずにエラーリターンする。

他の原因で接続できない場合は、 その旨のエラーパネルを表示し、 確認された後に、エラーリターンする。

接続した場合は、接続したファイルシステム内の登録されたすべての仮身の虚身状態を解除し、 虚身が登録されたウィンドウの管理プロセスに対して仮身要求イベント(虚身解除)を送信する。

処理中状態の虚身に対しては、 その虚身から開かれたウィンドウの管理プロセスに対して仮身要求イベント ( 虚身ウィンドウ解除 ) を送信する。この場合、そのウィンドウのタイトル表示は自動的に通常ウィンドウ表示に変更される。 虚身ウィンドウ内に含まれる仮身に対しては、仮身要求イベント ( 虚身解除 ) は送信されないため、虚身ウィンドウ解除の仮身要求イベントを受信した場合は、 基本的にそのウィンドウ内の全ての仮身の再表示を行なう必要がある。

接続したファイルシステムのデバイス仮身が実行環境ウィンドウに存在しない場合、 実行環境ウィンドウの管理プロセスに対して、 仮身要求イベント ( デバイス仮身の挿入要求 ) を送信する。

正常に接続された場合、evt ≠ NULLdev ≠ NULL のときは、 デバイス挿入イベントが発生した論理デバイス名が格納される。 従って、 dev は、 8 + 1 文字分の領域がなくてはいけない。

接続したファイルシステムは自動的に検索対象ファイルシステムの最後に追加される。 また、必要に応じて小物メニューが自動的に更新される。

この関数は、デバイスイベント(ディスク挿入イベント)が発生した場合に必ず実行しなくてはいけない。

【エラーコード】

EX_ADR      : アドレス(evt,dev)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(evt の内容が不正)。
ofmt_vob
 
仮身の再フォーマット処理

【形式】

W   ofmt_vob(W vid)

【パラメータ】

W   vid 仮身ID

【リターン値】

=0    正常 (再フォーマットされた)
=1    正常 (取り消された)
<0    エラー (エラーコード)

【解説】

vid で指定したデバイス仮身が示すデバイスを再フォーマットする。 新たにフォーマットされたデバイスは接続され、 以後、vid が指す仮身はこのデバイスを参照するデバイス仮身に変換される。

指定した仮身が切断状態、 またはデバイス仮身でない場合は、EX_VOBJ のエラーとなる。

デバイス内に処理中状態の実身が存在する場合は、 その旨のエラーパネルを表示した後、EX_VOBJ でエラーリターンする。

デバイスが切断できない場合は、 その旨のエラーパネルを表示した後、 エラーリターンする。

再フォーマットされた場合、 元のデバイスを参照する他のデバイス仮身に対して、 名称変更の仮身要求イベントが送信され、元のデバイス内の実身を参照する他の仮身に対して、 虚身状態移行の仮身要求イベントが送信される (vid で指定した仮身に対しては送られない)。

再フォーマットされた場合は関数値 "0" が戻り、 再フォーマットが取り消された場合は関数値 "1" が戻る。

付箋の場合は、X_VOBJ のエラーとなる。

【エラーコード】

EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当
              (処理中状態、切断状態、デバイス仮身でない、付箋)。
ocnv_vob
 
仮身の変換

【形式】

W   ocnv_vob(W org, W vid, LINK *lnk)

【パラメータ】

W       org     仮身 ID
W       vid     仮身 ID
LINK    *lnk    実身のリンク

【リターン値】

=0    正常 (リンクファイルは生成しなかった)
=1 正常 (リンクファイルを生成した)
<0 エラー (エラーコード)

【解説】

org で指定した仮身の参照する実身内に、 vid で指定した仮身を保存するために、 仮身の変換を行なう。 lnk≠NULL の場合は、 lnk で指定した領域に変換後の仮身が参照する実身のリンクが格納される。

vid で指定した仮身の参照する実身が、 org で指定した仮身の参照する実身と、 同一のファイルシステムに存在する場合は、 何の変換も行なわれず、関数値として "0" を戻す。

そうでない場合は、vid で指定した仮身の参照する実身を参照するためのリンクファイルが、 org で指定した仮身の参照する実身が存在するファイルシステム上に生成され、 vid で指定した仮身は、生成したリンクファイルを参照する仮身に変換される。 同時に元の続柄名を保つために仮身の続柄インデックスの変更、 および続柄ファイルへの自動登録が行なわれる。 この場合は、関数値として "1" が戻る。

org で指定した仮身が虚身状態の場合は、 EX_VOBJ のエラーとなる。

この関数は、アプリケーションが仮身を実身に保存する場合に使用される。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
EX_VID      : 仮身ID(vid,org)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(切断状態、付箋)。
oopn_obj
 
実身のオープン

【形式】

W   oopn_obj(W vid, LINK *lnk, UW omode, TC *pwd)

【パラメータ】

W       vid     仮身 ID
LINK    *lnk    実身のリンク
UW      omode   オープンモード
TC      *pwd    パスワード文字列

【リターン値】

≧0    正常 (オープンした実身のファイルディスクリプタ)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の参照する実身を、 o_mode で指定したモード、 pwd で指定した合言葉でオープンし、 そのファイルディスクリプタを関数値として戻す。

lnk≠NULL の場合は、 lnk で指定した領域に仮身の参照する実身のリンクが格納される。

指定した仮身が虚身状態の場合は「デバイス接続パネル」が表示されて、 ファイルシステムの接続処理が行なわれる。 接続されなかった場合はエラーリターン ( EX_VOBJ)する。

ファイルがオープンできなかった場合は、 その旨のエラーパネルの表示が行なわれ、 ファイル管理から戻されたエラーコードを関数値としてエラーリターンする。 ただし、合言葉が正しくないエラーのときは、合言葉の入力処理を行ない、 正しい合言葉が入力された場合は正常リターンする。 合言葉の入力が取り消された場合は、エラーリターン ( EX_PWD )する。

通常、アプリケーションは実身をオープンする場合はファイル管理の opn_fil() の代りにこの関数を使用する。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(lnk,pwd)のアクセスは許されていない。
EX_VID      : 仮身ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(切断状態、付箋)。
odel_obj
 
実身の削除

【形式】

W   odel_obj(LINK *lnk, W mode)

【パラメータ】

LINK    *lnk    実身のリンク
W       mode    削除モード
                ≠ 0 : 削除できなかった場合にエラーパネルを表示する。
                = 0 : エラーパネルを表示しない。

【リターン値】

≧0 正常 (実際に削除した実身数) <0 エラー (エラーコード)

【解説】

lnk で指定したファイルが削除可能である場合に削除し、 さらに、そのファイルに含まれるリンクの示すファイル (ネストしたファイル)が削除可能になった場合はネストして削除する。

削除可能であるのは、ファイルの参照カウント = 0 で、 かつ、そのファイルを参照している仮身が登録されていない場合となる。 この条件はネストしたファイルに対しても適用される。

【エラーコード】

EX_ADR      : アドレス(lnk)のアクセスは許されていない。
oget_fsn
 
付箋固有データの取り出し

【形式】

ERR oget_fsn(W vid, W fd, VP dat, UW size)

【パラメータ】

W   vid     仮身 ID
W   fd      実身のファイルディスクリプタ
VP  dat     固有データ格納領域
UW  size    dat のバイト数

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の示す実身内に存在する起動対象となった実行機能付箋レコード内の固有データを取り出して dat で指定した領域に格納する。 sizedat で指定した領域のバイトサイズを示し、 このサイズが固有データのサイズより小さい場合は、そのサイズ分のみが格納される。

格納される固有データの先頭には、 固有データのバイトサイズ ( dlen ) が格納され、 その後に固有データ自体が格納される。

vid は、 実身 / 仮身マネージャから渡される起動メッセージ ( M_EXECREQ 構造体 ) の中の対象仮身ID ( vid ) を指定する。

この関数の実行前に、 アプリケーションは自分で対象の実身をリードまたは更新オープンしておき、 オープン時に得られたファイルディスクリプタを fd として渡す必要がある。

この関数は、 仮身のオープン起動で起動された場合にアプリケーションが実行機能付箋レコードの固有データを対象実身から取り出すために使用する。 ただし、デフォールト起動の場合にこの関数を使用すると、 実身/仮身マネージャで保持されている固有データではなく、 対象実身内に存在する実行機能付箋レコードの固有データを取り出すため、 デフォールト起動の場合は、通常、 この関数を使用せずに起動時に渡された固有データへのポインタを使用して固有データを取り出す必要がある。 指定した仮身が処理中状態でない場合、および切断状態の場合は、EX_VOBJのエラーとなる。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(dat)のアクセスは許されていない。
EX_VID      : 仮身 ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(切断状態、処理中状態でない、付箋)。
EX_PAR      : パラメータが不正である(size < 0)。
oput_fsn
 
付箋固有データの格納

【形式】

ERR oput_fsn(W vid, W fd, VP dat)

【パラメータ】

W   vid     仮身 ID
W   fd      実身のファイルディスクリプタ
VP  dat     固有データ

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

vid で指定した仮身の示す実身内に存在する起動対象となった実行機能付箋レコード内の固有データを、 dat で指定した領域の内容で更新する。 dat で指定した領域の先頭に、 固有データのバイトサイズ ( dlen ) があり、 その後に固有データ自体があるものとみなす。

vid は、実身/仮身マネージャから渡される起動メッセージ ( M_EXECREQ 構造体 ) の中の対象仮身ID ( vid ) を指定する。

この関数の実行前に、 アプリケーションは自分で対象の実身を更新オープンしておき、 オープン時に得られたファイルディスクリプタを fd として渡す必要がある。

この関数は、アプリケーションが対象実身内の実行機能付箋レコードの固有データを更新するために使用する。 デフォールト起動の場合でも、通常は対象実身内の実行機能付箋レコードの固有データを更新しておく必要があるため、 この関数を使用して固有データの更新を行なう。 さらに、実身 / 仮身マネージャ内で保持されている固有データも oend_prc() 関数を使用して更新する必要がある。

なお、この関数では対象ファイルの更新日時は変更されない。

指定した仮身が処理中状態でない場合、 および切断状態の場合は、EX_VOBJ のエラーとなる。 従って、この関数は oend_prc() を実行する以前に実行しなくてはいけない。

付箋の場合は、EX_VOBJ のエラーとなる。

【エラーコード】

EX_ADR      : アドレス(dat)のアクセスは許されていない。
EX_VID      : 仮身ID (vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(切断状態、処理中状態でない、付箋)。
ocre_chd
 
子実身の生成

【形式】

W   ocre_chd(W vid, TC *name, W *nvid)

【パラメータ】

W   vid     仮身ID
TC  *name   実身のデフォールト名称
W   *nvid   生成した実身の仮身ID

【リターン値】

≧0    正常 (生成した実身のファイルディスクリプタ)
<0    エラー (エラーコード)

【解説】

vid で指定した仮身に対する子実身を生成し、 そのファイルディスクリプタを関数値として戻す。

name は生成する実身のデフォールト名称であり、 「保存先指定パネル」が表示され、最終的に指定された名称が戻る。

nvid には新規に生成された実身を参照する仮身 ID が格納される。 生成された仮身は、vid が開いているウィンドウに対して登録されるが、 その位置は保証されないため、必ず正しい位置に移動する必要がある。

新規に生成される実身は、vid で指定した実身と同一タイプであり、 実行機能付箋のみが複写される。

仮身要求イベントは発生しない。

【エラーコード】

EX_ADR      : アドレス(name, nvid)のアクセスは許されていない。
EX_VID      : 仮身ID(vid)は存在していない。
EX_VOBJ     : 仮身の状態/属性が不適当(切断状態、付箋)。
EX_PAR      : 取り消された。
otad_vob
 
仮身の表示用TADデータ作成処理

【形式】

W   otad_vob(W vid, RECT *r, UW disp, LINK *lnk)

【パラメータ】

W       vid ≧ 0      : 仮身 ID
            = 0x8000 : 仮身リスト指定
            < 0      : - (ウィンドウ ID)
RECT    *r            表示領域
                      (仮身リスト指定のときは、仮身リストへのポインタ)
UW      disp          仮身の表示/消去方法 (odsp_vob と同じ)
                        ::= (V_ERASE ‖ V_DISP ‖ V_DISPALL ‖ V_DISPAREA)
                            | [V_NOFRAME]
LINK    *lnk    作成した TAD データファイルへのリンク

【リターン値】

  ≧0    正常 (処理した仮身の数)
  <0    エラー (エラーコード)

【解説】

仮身を表示する ( odsp_vob ) 代わりに、表示した状態を表現する TAD データを作成する。

vid で指定した仮身の表示 / 消去を行なった表示のための TAD データを一時ファイルに作成し、 そのリンクを lnk に格納する。r は表示すべき領域の相対座標での指定であり、 仮身の領域と r の共通部分のみのデータが作成される。 r = NULL の場合は、仮身の領域全体のデータが作成される。

仮身のデータは、その時点の仮身の状態 ( 虚身状態、処理中状態等 ) に応じた表示を表現するように作成される。

開いた仮身の表示エリアのデータは、 仮身のデフォールトアプリケーションに対して、 TAD データ作成起動 ( M_TADREQ ) を実行して作成する。 ただし、TAD データ作成起動がエラーとなった場合は、 開いた仮身の表示起動 ( M_DISPREQ ) を実行して作成したイメージを TADデータとして作成する。

vid < 0 の場合は、- vid で指定した値をウィンドウ ID とみなして、 そのウィンドウ/パネル上に登録されているすべての仮身のデータを作成する。

vid = 0x8000 のときは、仮身リスト指定となり、 r を以下の仮身リスト構造へのポインタとみなして、 複数の仮身のデータを高速に作成する。 途中の仮身 ID が不正のときは、それ以降の仮身の表示は保証されない。

    W       vid -- 仮身 ID
    RECT    r   -- 表示領域
       :   :
    W       0   -- 終了を示す

vid < 0 の場合は、関数値として処理した仮身の数が戻る。 指定したウィンドウ / パネルに仮身が 1 つも登録されていない場合は何もせず、 関数値 "0" が戻る。

vid ≧ 0 または、vid = 0x8000 の場合は、 関数値は常に "0" となる。

付箋の場合は、V_DISPV_DISPAREA は、すべて同一の意味となる。

ファイル管理のエラーが発生した場合には、 そのエラーコードがそのままエラーリターンする。

【エラーコード】

EX_ADR      : アドレス(r)のアクセスは許されていない。
EX_PAR      : パラメータが不正である(disp が不正)。
EX_VID      : 仮身 ID (vid)は存在していない。
EX_WID      : ウィンドウ(wid)は存在していない(vid < 0 のときのみ)。

3.8.6 アプリケーション支援関数

ここでは、実身 / 仮身の処理には直接的には関連しないが、 アプリケーション支援のために、実身 / 仮身マネージャとしてサポートしている各関数の詳細を説明する。 これらの関数群は外殻の拡張システムコールとして提供される。

関数値は、何らかのエラーがあった場合は「負」のエラーコードが戻る。 正常終了時には「0」または「正」の値が戻る。

aset_sel
 
選択枠のチラツキ間隔設定

【形式】

W   aset_sel(W period)

【パラメータ】

W   period  チラツキ間隔(ミリ秒単位)

【リターン値】

≧0    正常 (以前のチラツキ間隔)

【解説】

選択枠のチラツキ間隔を period で指定した間隔に設定し、 以前のチラツキ間隔を関数値として戻す。

period  ≦ 0
の場合は、設定を行なわず、 単に現在のチラツキ間隔を関数値として戻す。

period の値はミリ秒単位であるが、実際の分解能はインプリメントに依存する。

【エラーコード】

なし

adsp_sel
 
選択枠の表示

【形式】

ERR adsp_sel(GID gid, SEL_RGN *selp, W mode)

【パラメータ】

GID     gid 描画環境 ID
SEL_RGN *selp   選択枠領域
W       mode    表示モード
                = 0 : 消去
               > 0 : 表示
               < 0 : チラツキ表示

【リターン値】

=0 正常 <0 エラー (エラーコード)

【解説】

selp で指定した選択枠を、 gid で指定した描画環境上に表示 / 消去 / チラツキ表示する。

selp->sts は、選択枠の状態を保持する以下の内容のデータである。

    xxxx xxxx xxxx xxxx IPBD WWWW TTTT TTTT
I =0可能状態
1不可状態 ( 表示されない )
P =0矩形選択枠
1多角形選択枠 ( 角丸めは無視される )
B =0チラツキ状態でない
1チラツキ状態
D =0消去状態
1表示状態
W 枠幅 ( 0 はデフォールト )
T チラツキ間隔カウンタ
x 予約

B, D, T の値は、adsp_sel() の中で、 状態を保持するために使用しているため、変更してはならない。

枠幅を表示状態で変更してはいけない(表示は保証されない)。

チラツキ間隔カウンタの初期値は問わない(通常は 0 とする)。

【エラーコード】

EX_ADR      : アドレス(selp)のアクセスは許されていない。
EG_xxx      : 描画(ディスプレイプリミティブ)のエラー。
adsp_slt
 
選択枠リストの表示

【形式】

ERR adsp_slt(GID gid, SEL_LIST *selp, W mode, W dh, W dv)

【パラメータ】

GID       gid     描画環境 ID
SEL_LIST  *selp   選択枠領域リスト
W         mode    表示モード
                  = 0 : 消去
                  > 0 : 表示
                  < 0 : チラツキ表示
W         dh      水平移動量
W         dv      垂直移動量

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

selp で指定した選択枠リストに含まれる選択枠群を、 gid で指定した描画環境上に表示 / 消去 / チラツキ表示する。

dh, dv は、それぞれ選択枠の水平、垂直座標の移動量を示し、 選択枠群は、dh, dv だけ座標を移動して表示される。

【エラーコード】

EX_ADR      : アドレス(selp)のアクセスは許されていない。
EG_xxx      : 描画(ディスプレイプリミティブ)のエラー。
apnl_men
 
パネルメニュー処理

【形式】

W   apnl_men(W pnid, W pid, EVENT *epv)

【パラメータ】

W       pnid    パネル ID
W       pid     テキストボックスパーツ ID
EVENT   *epv    メニュー起動イベント

【リターン値】

=0    正常
<0    エラー (エラーコード)

【解説】

pnid のパネル ID で指定したパネル上の、 pid のパーツ ID で指定したテキストボックスに対してトレーからの編集メニューの処理を行なう。

*evt はパネルの動作実行で得られたメニューイベントでなくてはいけない。

*evtEV_KEYDWN のときは、 キーメニューとしての処理を行ない、 そうでないときは、以下の内容のメニューを画面に表示して、 選択された項目に応じた処理を行なう。

    編集    トレーへ複写    C
            トレーから複写  Z
            トレーへ移動    V
            トレーから移動  X
            削除

メニュー処理の結果として、トレーや対象のテキストボックスの内容が更新される。

【エラーコード】

EX_ADR      : アドレス(epv)のアクセスは許されていない。
achg_bgc
 
ウィンドウ背景色変更処理

【形式】

W   achg_bgc(W *mask, COLOR *color, COLOR bgc)

【パラメータ】

W       *mask   マスク(0, FILL0 (1) 〜 FILL100 (7)) 0 は仮身背景色と同じ
COLOR   *color  背景色
COLOR   bgc 仮身背景色

【リターン値】

=0    正常 (取り消し、または変更なし)
=1    正常 (変更された)
<0    エラー (エラーコード)

【解説】

mask, color, bgc で指定された現在のウィンドウ背景色に対して、 「ウィンドウ背景色変更パネル」を表示して、ウィンドウ背景色の変更を行い、 変更した結果を、mask, color に格納する。

bgc < 0 のときは、 「仮身背景色と同じ」という選択はないようになる。

【エラーコード】

EX_ADR      : アドレス(mask, color)のアクセスは許されていない。

この章の目次にもどる
前頁:3.7 テキスト入力プリミティブにもどる
次頁:3.9 フォントマネージャにすすむ