キーボード操作
述語名/引数 | (eg:EnableKey ) |
要約 | キーボードのメッセージがウインドウから送られるようにします。 |
互換性 | Win |
解説 | キーボードのメッセージ (WM_KEYDOWN *keycode *ext
*ps) (WM_KEYUP *keycode *ext *ps) メッセージの取得についてはメッセージ処理を参照してください。 |
述語名/引数 | (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 ? ? ? ?))