>しかしウィンドウを最小化して、再びウィンドウを戻した時には、
>なぜか赤い四角も表示されています。
そのようになる理由は、最小化して元のサイズに戻すと
無効領域ができて、WM_PAINT(0x0F)が送信されて自動的に描画されるためです。
//WM_PAINT(0x0Fの送信サンプル)
oncmd gosub *red,0x0F //WM_PAINT
redraw 0
boxf 100,100,200,200
stop
*red
mes "画面更新"
return
>勝手に描画範囲を勝手に膨張しないためには、どうしたらいいでしょう?
ウィンドウが最小化され、元に戻されたとき、描画されていないところもすべて描画しないと
さっきまであった背景が残ってしまうので、無理だと思います。
//描画を無理やり無効にしたスクリプト
#uselib "user32"
#func ValidateRect "ValidateRect" int,int
oncmd gosub *red,0x0F //WM_PAINT
color ,,255
boxf 0,0,100,100
redraw 0
color 255
boxf 100,0,200,100
rect=100,0,200,100//赤い正方形のところの描画を無効に...
stop
*red
//描画を無効にする
ValidateRect hwnd,varptr(rect)
return