パネルのシステムコールを直接使用せずに、 標準的なパネルが容易に使えるようにしたライブラリである。
  | 
W panel(W pnl)
W pnl データ番号
処理関数のリターン値(dostdpnl()のリターン値)
  pnl で指定したデータ番号の標準パネルを
  dostdpnl() を使用して表示/実行する。
  グローバル変数 _inh_panel≠0 の時は、何も行わない。
  | 
W bgpanel(W pnl)
W pnl パネルのデータ番号
処理関数のリターン値(dostdpnl()のリターン値)
  pnl で指定したデータ番号の標準パネルを
  panel() を使用して表示/実行する。
  グローバル変数 _no_errpanel を 1 に設定してから 
  panel() を実行する。
  これによりパネルが生成できなかった時に、
  致命的エラーパネルは表示されないようになる。
  | 
W errpanel(W pnl, W err)
W pnl 標準パネルのデータ番号 W err 表示するエラーコード
処理関数のリターン値 (
dostdpnl()のリターン値 )
  pnl で指定したデータ番号の標準パネルを 
  panel() を使用して表示/実行する。
err
     で示されたエラーコードに対応する詳細エラー情報をデータボックスから取り出して、
     そのポインタを _spc_text_ptr に設定する。
 panel() によりパネルを表示/実行する。
 _spc_text_ptr を NULL に設定する。
  | 
VOID initstdpnl(void)
なし
なし
  初期化のため、パネル表示用のスペアメモリを 
  get_lmb() で獲得する。
パネルが表示できないケースをできるだけ減らすために、 パネルの生成エラー時にスペアメモリを解放して再度、試す場合に使用する。 一度解放したスペアメモリは、パネルを削除する時点で再度確保する。
  | 
W clsstdpnl(void)
なし
不定
現在表示中のパネルを削除する。
  | 
W opnstdpnl(W pnl, FUNCP fn)
W pnl パネルのデータ番号 FUNCP fn パネル処理関数
≧0 パネルID <0 エラーコード
  pnl で指定したデータ番号の標準パネルを生成、
  表示する。fn はパネル処理関数を示し、
  パネル処理関数がない場合は NULL とする。
_spc_text_ptr から取り出す
     (errpanel() の詳細エラー情報に対応する処理)。
 0x8000 の時は、
     実際のパネルは生成せずに、
     関数値 0x8000 でリターンする。
pcre_pnl() により、
     パネルを生成、表示する。EX_SAVE エラー) は、
          最大1分まで、1秒毎に再度 4. を繰り返す。
      _no_errpanel = 0 の時は、
          pact_err() により致命的エラーのパネルを表示する。
      _no_errpanel はリターン時、常に 0 クリアされる。
 
  | 
W exstdpnl(W pnid, FUNCP fn)
W pnid パネルID FUNCP fn パネル処理関数
処理関数の関数値
  pnid で指定したパネルIDのパネルの実行処理を行う。
  fn はパネル処理関数を示し、
  パネル処理関数がない場合は NULL とする。
pact_pnl() によりパネル動作実行を行う。
 pact_pnl() の関数値により以下の処理を行う。
P_EVENT の時 :
 evt_loop() が実行されている場合は、
     wuget_evt()、evt_proc() を連続して実行する。
     evt_loop() が実行されていない場合は、
     EV_DEVICE の時は oprc_dev() を実行し、
     EV_MSG の時は、
     メッセージキューの先頭をクリアする。evt_loop() が実行されているか否かは、
     evt_loop 関数テーブルポインタ( _wfunc )が NULL
     か否かで判断する)。
     P_MENU の時 :
 pact_pnl() で得られたパネルの項目番号を内部番号に変換する。
 リターン値 = 0 
     で、7. へ進む。
 
処理関数の関数値≧ 0       :関数値をリターン値として(7)へ進む。
                = 0x8000   :pnid を関数値としてリターンする。
                < 0       :処理続行、(2) へ戻る。
 
pact_pnl() で得られたイベントはグローバル変数
_pnl_evt を使って外部から参照可能である。
パネル処理関数は、パネルの操作をした場合に実行される関数で以下の形式となる。
W   fn (W pnid, ino, value)
    pnid   : パネルID
    = -1   : 生成前処理
    ino    : 操作された項目の内部番号
    =  0   : 初期化処理
    = -1   : 生成前処理
    = -2   : 再表示処理
    value  : pact_pnl() からのリターン値
  生成前処理は、パネルデータを作成した後、
  pcre_pnl() を実行する直前に呼ばれる。
  この時点では、内部番号を使用した、
  rectstdpnl()、ptrstdpnl()、itemstdpnl()
  が使用できるので、
  生成直前の細部の調整を行うことができる。
  また、関数値として 0x8000 を戻すと、パネルの生成を止めることができる。
  初期化処理は、pcre_pnl() を実行後、
  pact_pnl() を実行する直前に呼ばれる。
再表示処理は、パネルの再表示が必要となったときに呼ばれる。 パネル定義データによって描画された内容やパーツ類が再表示されたあと、 この処理が呼ばれる。 アプリケーションがパネルに直接描画していなければ、 何もしなくてよい。
関数値として <0 を戻した場合は、 パネルの動作を続行し、≧0を戻した場合はパネルが削除され、 その値を exstdpnl() の関数値として戻す。
  関数値 = 0x8000 の場合は、
  特殊処理として パネルを削除せずにパネル ID を
  exstdpnl() の関数値として戻す。
  | 
W dostdpnl(W pnl, FUNCP fn)
W pnl パネルのデータ番号 FUNCP fn パネル処理関数
処理関数の関数値
  pnl で指定したデータ番号の標準パネルを生成し、
  実行する。fn はパネル処理関数を示し、
  パネル処理関数がない場合は NULL とする。
opnstdpnl() でパネルを生成、表示する。
 exstdpnl() でパネルを実行し、その関数値でリターンする。
  | 
VOID rectstdpnl(W ino, RECT *rp)
W ino 内部番号 RECT *rp 結果を戻す領域
なし
  現在表示中のパネルの、
  ino で指定した内部番号に対応するパネルの項目の領域を
  *rp に戻す。
  ino = 0
  の場合は、パネル全体の領域を戻す。
  | 
W pidstdpnl(W ino)
W ino 内部番号
≧0 パーツID <0 該当パーツなし
  現在表示中のパネルの、ino
  で指定した内部番号に対応するパネルの項目のパーツIDを関数値として戻す。
  | 
TC* ptrstdpnl(W ino)
W ino 内部番号
≠NULL パネルの項目へのポインタ =NULL 該当項目なし
  | 
W itemstdpnl(W ino)
W ino 内部番号
≠NULL パネルの項目番号 =NULL 該当項目なし
  現在表示中のパネルの、ino
  で指定した内部番号に対応するパネルの項目番号 ( 1 〜 ) 
  を関数値として戻す。
  | 
VOID offtoptr(UW *ptr)
UW *ptr データオフセット
なし
  ptr で指定したアドレスにあるデータオフセットをポインタへ変換する。
  結果は ptr の指す先を直接変更する。
  | 
VOID adjscalr(RECT *rp)
RECT *rp 長方形
なし
  *rp で指定された長方形の c.left < 0 の時、
  1 / 16 標準文字サイズ単位の座標値とみなして実座標値に変換する。
  変換した結果は *rp に格納される。
  | 
VOID sysmsg(W msg)
W msg メッセージのデータ番号
なし
  msg で指定したデータ番号の文字列データをデータボックスから取り出し、
  システムメッセージパネルに表示し、ポインタ形状をビジー形状に変更する。
  msg = 0 の場合は、
  システムメッセージパネルをクリアし、
  ポインタ形状を選択指に変更する。
  グローバル変数 _inh_panel が 0 でない時は、何も行わない。
  | 
W chgbgcol(W *mask, COLOR *color, COLOR bgcol)
W       *mask   マスク(0〜7)、0は仮身背景色と同じ
                1〜7は、 FILL0〜FILL100。(入出力)
COLOR   *color  背景色(入出力)
COLOR   bgcol   仮身背景色(入力)
0 変更なし(または、エラー) 1 変更あり(*mask, *color に変更結果が戻される)
ウィンドウの背景色のパネル処理全体を行う。
  パネルは、標準パネルとしてデータボックス内に (0x8000+250) のデータ番号で定義されていなくてはならない。
  実際のパネルの生成、動作は dostdpnl() 関数を使用する。
  以下のグローバル変数を使用する ( getscreen() 関数をあらかじめ実行しておく必要がある)。
IMPORT W CHSSTD; IMPORT PATTERN BLACK100; IMPORT WEVENT _pnl_evt;