HSP3のSTOPは重い?

重いといってもCPU負荷が高いということではなく、反応が鈍いということです。

onkey *b
*b
title " "+wparam
stop

onkey *b
*b
title " "+wparam
*c
wait 100:goto *c

を比べてみてください。
下のwaitを使ったスクリプトではキーを押したときに反応があります。
しかし、上のstopで待つスクリプトでは、カーソルキーなどの反応が鈍い。
キーを押した瞬間ではなく離した時に反応しています。
文字コードが得られるAとか9とかのキーは問題ないようです。
HSP2.6では差はないので、HSP3で仕様が変わったのかもしれません。


以下のスクリプトでメッセージがユーザースクリプトレベルに渡ってくるのか
調べてみました。

oncmd *b,$100 ; WM_KEYDOWN
oncmd *b,$101 ; WM_KEYUP
*b
title " "+iparam+" "+wparam
stop

カーソルキーなどの文字コードのないキーでは、WM_KEYUPかリピートのWM_KEYDOWNは
反応があるのに、非リピートのWM_KEYDOWNがユーザーレベルに渡ってきていません。
文字コードのあるキーについては、WM_KEYDOWNはリピート無関係で直ぐに渡ってきて
いますが、WM_KEYUPのタイミングはstopで待っているときはキーを離してから渡って
くるまでに少しタイムラグがあります。


深いところまで調査するつもりはありませんが、おそらくstop中はHSP内部でWindows
メッセージのハンドリングを細工しているのでしょう。
何にしろ現時点ではstopで待つとレスポンスに影響するようなので、気をつけます。