キーボード操作

Topへ

 

述語名/引数  (eg:EnableKey )
要約 キーボードのメッセージがウインドウから送られるようにします。
互換性 Win
解説 キーボードのメッセージ

(WM_KEYDOWN *keycode *ext *ps)
 *keycode 押下されたキーのコード
 *ext 拡張キーの場合1それ以外は0
 *ps 直前のキーの状態。押されていた場合は1。そうでない場合は0。

(WM_KEYUP *keycode *ext *ps)
 *psは常に1です。それ以外はWM_KEYDOWNと同じです。

メッセージの取得についてはメッセージ処理を参照してください。

 


述語名/引数  (eg:DisableKey)
要約 キーボードのメッセージを無効にします。
互換性 Win
解説 N/A

 

以下の例では、キーボードの矢印キーを使ってキャラクタを操作します。

(as (test) :(loadModule "eggraph.dll" *2)(test2))
(as (test2):(eg:CreateWindow 10 20 640 480 "ビットマップとキーボードのサンプル")
(eg:LoadBitmap "e1.bmp" *e1)
(eg:LoadBitmap "e2.bmp" *e2)
(setv E1 *e1)
(setv E2 *e2)
(eg:SetBrush 100 100 200)
(setv X 300)
(setv Y 200)
(eg:EnableKey)
(eg:SetTimer 0 1)
(loop))
(as (loop):(eg:GetMessage *wm)(mh *wm)(loop))

;;上
(as (mh (WM_KEYDOWN 38 0 0)):(setv V -1))
(as (mh (WM_KEYUP 38 ? ?)):(setv V 0))
;;下
(as (mh (WM_KEYDOWN 40 0 0)):(setv V 1))
(as (mh (WM_KEYUP 40 ? ?)):(setv V 0))
;;左
(as (mh (WM_KEYDOWN 37 0 0)):(setv H -1))
(as (mh (WM_KEYUP 37 ? ?)):(setv H 0))
;;右
(as (mh (WM_KEYDOWN 39 0 0)):(setv H 1))
(as (mh (WM_KEYUP 39 ? ?)):(setv H 0))

;;動かす&表示
(as (mh (WM_TIMER 0)):
(move)
(eg:Rectangle 0 0 640 480)
(getv X *x)(getv Y *y)
(getv E1 *e1)(getv E2 *e2)
(eg:BitBltAnd *x *y *e2)(eg:BitBltOr *x *y *e1)
(eg:Update))

;;デフォルト
(as (mh ?))

;;座標計算
(as (move):(getv H *v)(getv X *x)(move X *v *x 600)
(getv V *h)(getv Y *y)(move Y *h *y 440))
(as (move *SYM *v *x *max)(< *v 0)(> *x 0):(:= *x2 (+ *x *v))(setv *SYM *x2))
(as (move *SYM *v *x *max)(> *v 0)(< *x *max):(:= *x2 (+ *x *v))(setv *SYM *x2))
(as (move ? ? ? ?))