この章の目次にもどる
前頁:2.6 パネルにもどる
次頁:2.8 屑ファイル処理にすすむ

2.7 メニュー

メニューのシステムコールを直接使用せずに、 簡単に標準的なメニュー処理を行えるようにしたライブラリーである。

openmenu
 
標準メニューのオープン

【形式】

W   openmenu(W men)

【パラメータ】

W   men データ番号

【リターン値】

≧0    メニューID
<0    エラー

【解説】

men で指定したデータ番号の標準メニューをオープンして、 メニューIDを関数値として戻す。

データボックス上の標準メニュー定義をメニューマネージャに渡す構造体に変換し、 メニューを生成する。この時、仮身操作等の特殊メニュー項目はダミーの項目としておく。

openmenu() では、 同時に1つのメニューしかオープンできない。

closemenu
 
標準メニューのクローズ


【形式】

VOID    closemenu(void)

【パラメータ】

なし

【リターン値】

なし

【解説】

openmenu() でオープンした標準メニューをクローズする。

selmenu
 
標準メニューの選択処理


【形式】

W   selmenu(W vid, FUNCP mfunc[])

【パラメータ】

W           vid 仮身ID
FUNCP   mfunc[] メニュー対応関数

【リターン値】

メニュー対応関数の戻値

【解説】

登録した標準メニューの選択処理を行う。 キーメニューによる選択処理も行う。

  1. wevt.e.type = EV_AUTKEY の時は 何もせずにリターンする。
  2. 仮身操作等の特殊メニュー項目を取り出して、登録したメニュー項目を変更する。 vidoget_vmn() でのパラメータとする。 実身操作メニューへの特殊メニューの追加の処理も行う。
  3. メニューの選択動作を行う。
    wevt.e.type = EV_KEYDOWN の時は、 mfnd_key() を実行する。 それ以外の時は msel_men() を実行する。
  4. 選択された項目番号を変換テーブルに従って、内部番号に変換する。
  5. 変換できなかった場合は、特殊メニュー項目の処理を行う。
    ウィンドウメニューの時は、wexe_dmn() を実行してリターンする。 仮身 / 実身 / ディスク / 付箋操作メニューの時は oexe_vmn() に渡すための選択番号の調整を行う。
    実身操作メニューの追加項目の場合は、選択番号 + 0x4000 とする。
  6. mfunc で指定されたメニュー対応関数を実行し、 その関数値でリターンする。 この時、変換テーブルに定義されているパラメータを、メニュー対応関数に渡す。
inactmenu
 
標準メニューの不能状態の一括設定

【形式】

VOID    inactmenu(W mask, W mode)

【パラメータ】

W   mask    内部番号マスク
W   mode    不能状態

【リターン値】

なし

【解説】

登録した標準メニューの不能状態を一括設定する。

mask は設定の対象を示すの内部番号のマスクで、 LSBが内部番号0、MSB が内部番号31に対応する。 mode により、mask で指定した項目の不能状態を設定する。

    mode = 0        : 対象を不能状態、対象以外を可能状態とする。
    mode = M_INACT  : 対象を不能状態、対象以外は変更なしとする。
    mode = M_ACT    : 対象を可能状態、対象以外は変更なしとする。
indmenu
 
標準メニューのインジケータ設定

【形式】

VOID    indmenu(W ino, W param, W mode)

【パラメータ】

W   ino     内部番号
W   param   項目を指定するパラメータ
W   mode    モード

【リターン値】

なし

【解説】

登録した標準メニューのインジケータを設定する。

ino で指定した内部番号の項目群 ( 1 〜 N 個) のインジケータを設定する。 同じ内部番号の項目群は、同じ親メニューに含まれていなくてはいけない。

mode & 3 = 0 : param≠0 の時 ON、param =0 の時 OFF
             = 1 : param=パラメータ の時 ON
                   param≠パラメータ の時 OFF
             = 2 : param & パラメータ=1 の時 ON
                   param & パラメータ=0 の時 OFF
opengmenu
 
汎用メニューのオープン


【形式】

W   opengmenu(W men)

【パラメータ】

W   men データ番号

【リターン値】

≧0        メニューID
<0        エラー

【解説】

men で指定したデータ番号の汎用メニューをオープンして、 メニューIDを関数値として戻す。

データボックス上の汎用メニュー定義をメニューマネージャに渡す構造体に変換し、 メニューを生成する。

同時に12個までの汎用メニューがオープンできる。

closegmenu
 
汎用メニューのクローズ


【形式】

VOID    closegmenu(W men)

【パラメータ】

W   men データ番号

【リターン値】

なし

【解説】

men で指定してオープンした汎用メニューをクローズする。

selgmenu
 
汎用メニューの選択処理

【形式】

W   selgmenu(W men, PNT pos, W *ppar)

【パラメータ】

W   men     データ番号
PNT pos     表示位置
W   *ppar   パラメータを戻す変数へのポインタ

【リターン値】

【解説】

men で指定してオープンした汎用メニューの選択処理を行い、 選択番号に対応する内部番号を関数値として戻し、*ppar にパラメータを戻す。

pos は汎用メニューの表示位置を指定する。

chggmenu
 
汎用メニューの状態変更処理

【形式】

VOID    chggmenu(W men, W ino, W param, W mode)

【パラメータ】

W   men     データ番号
W   ino     内部番号
W   param   項目を指定するパラメータ
W   mode    モード

【リターン値】

なし

【解説】

men で指定してオープンした汎用メニューの状態変更処理を行う。

ino で指定した内部番号の項目群 ( 1 〜 N 個 ) の状態を設定する。

    mode     <0: param で指定した状態を設定。
    mode & 1 =0: param = パラメータ の時、インジケータをON
                   param ≠ パラメータ の時、インジケータをOFF
               =1: param & パラメータ=1 の時、インジケータをON
                   param & パラメータ=0 の時、インジケータをOFF
keymenu
 
キーメニュー処理関数の実行

【形式】

W   keymenu(void)

【パラメータ】

なし

【リターン値】

メニュー処理関数の戻値

【解説】

イベント処理関数のキー入力処理として、 キーメニューの処理のみの時に、 イベント処理関数テーブルに登録するための関数。

イベント ( wevt ) の命令キーまたはメニューボタンがONの時に、 イベント処理関数として定義されたメニュー処理関数を実行して、その関数値を戻す。

命令キーおよびメニューボタンが OFF の時は、 何もせずに 0 を戻す。

chgmitem
 
メニュー項目変更処理


【形式】

VOID    chgmitem(W no, TC *ptr)

【パラメータ】

W     no    項目
TC  *ptr    変更する内容

【リターン値】

なし

【解説】

no で指定した項目をTCで指定した内容に変更する。


この章の目次にもどる
前頁:2.6 パネルにもどる
次頁:2.8 屑ファイル処理にすすむ