色々方法は有るけど、割り込みジャンプ系を使ってもいいなら
こんな感じ
#define linebox(%1,%2,%3,%4) repeat 4:line (%1)+((%3)*((cnt+1)\4>1)),(%2)+(%4)*(cnt>1),(%1)+(%3)*(cnt<2),(%2)+((%4)*((cnt+1)\4>1)):loop
oncmd gosub *mouse_click, $201 ;マウス左
oncmd gosub *mouse_click, $204 ;マウス右
oncmd gosub *mouse_click, $207 ;マウス中
repeat
redraw 0:color 255,255,255:boxf:color
pos 0,0
mes "MX("+mx+")"+" SIZEX("+sizx+")"
mes "MY("+my+")"+" SIZEY("+sizy+")"
if on_mousel{
if mlc{
sizx=mousex-mx
sizy=mousey-my
}else{
on_mousel=0
}
}
if sizx or sizy {linebox mx,my,sizx,sizy}
redraw 1 :await 10 :getkey mlc,1
loop
*mouse_click
mx=mousex
my=mousey
on_mousel=wparam&1 ;マウス左
on_mouser=(wparam&2)>0 ;マウス右
on_mousec=(wparam&16)>0 ;マウス中
on_shift=(wparam&4)>0 ;シフトも押されてる
on_ctrl=(wparam&8)>0 ;コントロールも押されてる
return
ループ速度を一定に保つのが重要なゲームとかじゃこの方はあまり良くないけど・・・
(awitの代わりにAPIのsleepとawit 0で待てば良いかな)
割り込みジャンプ系を使いたくないなら
#define linebox(%1,%2,%3,%4) repeat 4:line (%1)+((%3)*((cnt+1)\4>1)),(%2)+(%4)*(cnt>1),(%1)+(%3)*(cnt<2),(%2)+((%4)*((cnt+1)\4>1)):loop
w=(ginfo(10)-ginfo(12))/2 ;枠の幅
t=ginfo(11)-ginfo(13)-w ;タイトルの高さ
repeat
stick k,$fff
tmpmx=ginfo(0)-ginfo(4)-w
tmpmy=ginfo(1)-ginfo(5)-t
if tmpmx>=0 and tmpmy>=0 and tmpmx<=ginfo(12) and tmpmy<=ginfo(13) {
if ((k&256)>0) {
if kon=0 {smx=tmpmx:smy=tmpmy:kon=1}
emx=tmpmx
emy=tmpmy
}else{
kon=0
}
}
linebox smx,smy,emx-smx,emy-smy
title str(smx)+" "+smy+" "+emx+" "+emy+" "+kon
await 10
loop