上の問題を解消してみましたが、
今度は同じキーを素早く二度以上押した場合、無視されることがあります。
#module
#include "user32.as"
#deffunc boxnot int bx, int by, int wid, int heit
mref bm,67
dim rect,4
rect.0=bx, by, bx+wid-1, by+heit-1
InvertRect hdc,varptr(rect)
return
#defcfunc selitem int idx, int num, int px, int py, int wid, int heit
ilimit=300
climit=50
cur=idx
boxnot px,py+cur*heit,wid,heit: redraw ;反転する
start=gettime(7): curlimit=0: bug=0
repeat: wait 1
stick c,255,1
if c==32: break ;Enterキー
if c==2 | c==8 { ;↑キー,↓キー
now=gettime(7)
if (now+1000-start)\1000>curlimit {
if curlimit>0 {
curlimit=climit
} else {
curlimit=ilimit
}
start=now
boxnot px,py+cur*heit,wid,heit ;反転を戻す
if c==2 { ;↑キー
cur=(cur+4)\num
} else { ;↓キー
cur=(cur+1)\num
}
boxnot px,py+cur*heit,wid,heit ;反転する
redraw
}
bug=0
} else {
bug++
if bug>6 {
curlimit=0
}
}
loop
boxnot px,py+cur*heit,wid,heit: redraw ;反転を戻す
return cur
#global
num=5
gyokan=4
fsize=16
maxchar=4
sdim busho,40,num
busho="織田信長","羽柴秀吉","松平元康","今川義元","斎藤道三"
px=(640-fsize*maxchar)/2
py=(480-fsize*num-gyokan*(num-1))/2
y=py
repeat num
pos px,y
mes busho.cnt
y+=fsize+gyokan
loop
i=3
repeat
i=selitem(i, num,px,py,fsize*maxchar,fsize+gyokan)
dialog busho.i
loop