任意のポイントをドラッグする事でスクリーンを移動させる処理をします。
これには問題点が2つあり、
#define WM_MOUSEMOVE 0X0200 #define WM_LBUTTONDOWN 0x0201 #define WM_LBUTTONUP 0X0202 oncmd gosub *ldown,WM_LBUTTONDOWN oncmd gosub *lup,WM_LBUTTONUP oncmd gosub *mmove,WM_MOUSEMOVE buffer 1 color:boxf bgscr 0 lFlg=0 rot=0.0 repeat stick ky:if ky&&128:end gosub *draw await 16+((cnt\3)>0) loop *draw redraw 0 color 255,255,255:boxf pos 320,240 grotate 1,0,0,rot,200,200 rot+=0.02 pos 0,0:color 255,0,0:mes "ESC:終了"+" クリックフラグは、"+lFlg redraw 1 return *ldown X1=mousex:Y1=mousey lFlg=1 return *lup lFlg=0 return *mmove if lFlg==0:return width ,,ginfo_mx-X1,ginfo_my-Y1 return
1 ドラッグ中に高速でマウスを動かすとスクリーン外にポインタが
出るケースがあるが検知できない
2、ドラッグするしないに関わらずウインドウ上でマウスが動くとawaitが飛ばされて
処理が早廻しになる
1に関してはWM_MOUSELEAVEが使えるかと思ったのですが不可でした。
特に2を改善したいです。良い方法があるでしょうか?