HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0307
シンバルredrawの範囲指定2解決


シンバル

リンク

2008/3/7(Fri) 22:18:19|NO.14018


buffer 1 color 0,0,255 : boxf 0,0,100,100 buffer 2 color 255,0,0 : boxf 0,0,100,100 gsel redraw 0 pos 0,0 : gcopy 1,0,0,100,100 pos 100,0 : gcopy 2,0,0,100,100 redraw 1,0,0,100,100

上のスクリプトをやるとredrawの範囲指定で、青い四角が表示されます。
しかしウィンドウを最小化して、再びウィンドウを戻した時には、
なぜか赤い四角も表示されています。
勝手に描画範囲を勝手に膨張しないためには、どうしたらいいでしょう?



この記事に返信する


KENTA

リンク

2008/3/7(Fri) 23:48:26|NO.14019

>しかしウィンドウを最小化して、再びウィンドウを戻した時には、
>なぜか赤い四角も表示されています。

そのようになる理由は、最小化して元のサイズに戻すと
無効領域ができて、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



シンバル

リンク

2008/3/8(Sat) 01:58:48|NO.14023

ありがとうございました。納得しました。



ONION software Copyright 1997-2023(c) All rights reserved.