こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

UWSCでキー入力を変数に代入する方法

IFB GETKEYSTATE(VK_CTRL)
PRINT "Ctrlキーが入力されたよ"
ENDIF
という風に決め打ちで何が押されたか確認する方法は分かったのですが、
SELECT KeyInput
CASE VK_CTRL
PRINT "Ctrlキーが入力されたよ"
CASE VK_ESC
PRINT "Escキーが入力されたよ"
SELEND
というように変数にキー入力を代入してから比較する方法が分かりません。
キー入力を変数に代入する方法はあるのでしょうか?

投稿日時 - 2019-05-02 10:20:11

QNo.9612763

bgn

困ってます

質問者が選んだベストアンサー

配列変数に入れておくとか
---------------------
DIM KEY[] = VK_CTRL, VK_ESC, VK_SHIFT //先に登録
//DIM TEXTS[]="CTRL","ESC","SHIFT" //対応文字
KeyInput = NULL
For i = 0 to LENGTH(KEY)- 1
IFB GETKEYSTATE(KEY[i]) THEN
KeyInput = KEY[i]
//PRINT TEXTS[i]+"キーが入力されたよ"
BREAK //スルーするためForループを抜ける
ENDIF
NEXT
//以下付け足し
SELECT KeyInput
CASE VK_CTRL
PRINT "Ctrlキーが入力されたよ"
CASE VK_ESC
PRINT "Escキーが入力されたよ"
SELEND
---------------------

投稿日時 - 2019-05-02 14:59:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

KeyInput=GETKEYSTATE(VK_CTRL)
という形で代入できますが、予め何が押されたかを指定する必要のなるGETKEYSTATEなら
KeyInput=0
if KeyInput = 0 Then if GETKEYSTATE(VK_CTRL) then KeyInput=VK_CTRL
if KeyInput = 0 Then if GETKEYSTATE(VK_ESC) then KeyInput=VK_ESC
と言った羅列が必要になるので、Select~Caseで改めて判定する事で遅くなる必要性があるのかでしょうね。

投稿日時 - 2019-05-02 13:28:01

あなたにオススメの質問