2010/10/25

自前ウィンドウの任意の部分をドラッグして移動できるようにする

NILScriptの自前ウィンドウ生成機能では、タイトルバーや枠のないウィンドウも生成できます。
しかし、タイトルバーや枠のドラッグによる移動・リサイズが行なえないので、別途移動やリサイズのための動作を用意する必要があります。

ウィンドウの任意の部分をドラッグして移動できるようにするには、hitTestイベントを利用します。
このイベントは、カーソル下にあるのがウィンドウのどの部位かという問い合わせを受取ったときに実行されます。
ここでカーソル下がタイトルバーであると応答するようにすれば、マウスの左ボタンでドラッグしたときに、タイトルバーをドラッグしたときと同じようにウィンドウが移動されるようになります。

これを利用して前回のCPU使用率グラフ表示のウィンドウをドラッグ可能にしたのが、以下のスクリプトになります。
var img=require('Image').Image.create(100,100,"black");
var w=require('Window').PlainWindow.create({
    width:100,height:100,
    graphics:img,
    transparentColor:0x000000,toolWindow:true,
    topmost:true,
    events:{
        hitTest:function(o){
            o.result="caption";
            return(true);
        },
        mbuttonUp:function(o){
            this.close();
        },
    },
});
Thread.create(function(){
    var mon=new (require('SystemMonitor').CPU)(), rate=0;
    while(true){
        w.request(function(){
            img.fillEllipse(1,1,98,98,0x9999FF);
            img.fillPie(1,1,98,98,-Math.PI/2,(Math.PI*2)*rate,0x99FF99,true);
            img.strokeEllipse(1,1,98,98,0x010101,true);
            img.drawTo(w);
        });
        sleep(1000);
        rate=mon.get().usage;
    }
});
w.show();

0 件のコメント:

コメントを投稿