パネルのシステムコールを直接使用せずに、 標準的なパネルが容易に使えるようにしたライブラリである。
|
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;