こんにちわ。
>どのような命令を使えばいいのかがわかりません。
マウスのクリックをずっと監視するためのループ、[repeat] [await] [loop]
マウスのクリックを判断するためのキー情報取得 [stick]
マウスのキー情報を調べるための [if] [else]
が最低限、必要ではないかと思います。
もし、オブジェクト(?)を描画するならば、[buffer] [gcopy] [redraw] [pos]
なども必要になってくると思います。
頑張ってください。
もし、どうしても分からなかったら、下のスクリプトを見てみてください。
簡単なサンプルです。
buffer 0
// 赤色に塗りつぶす
color 255, 0, 0 :boxf
buffer 1
// 黄色に塗りつぶす
color 255, 255, 0 :boxf
screen 2, 640, 480
// 画面を黒色に塗りつぶす
color 0, 0, 0 :boxf
objdx = 50 // オブジェクトの大きさ x サイズ
objdy = 50 // オブジェクトの大きさ y サイズ
objax = 0 // オブジェクトの左上 x 座標
objay = 0 // オブジェクトの左上 y 座標
flag = 1 // 状態フラグ [ 0:選択中(画面ID.0), 1:未選択(画面ID.1) ]
repeat
// 入力させる
stick key
// 左クリックなら
if ( key == 256 ) {
if (mousex >= objax)&(mousex <= objax+objdx)&(mousey >= objay)&(mousey <= objay+objdy) {
// マウス座標がオブジェクト内にいる場合は選択状態にする
flag = 0
} else {
// マウス座標がオブジェクト内にいない場合は未選択状態にする
flag = 1
}
} else {
// 右クリックで、選択状態なら
if ( key == 512 ) & ( flag == 0 ) {
objax = mousex - objdx / 2 // オブジェクトの中心をマウス x 座標へ
objay = mousey - objdy / 2 // オブジェクトの中心をマウス y 座標へ
flag = 1 // 未選択状態にする
}
}
// フラグの状態が変更されたら
if ( _flag != flag ) {
_flag = flag // 新しいフラグを現在のフラグにする
redraw 0
boxf // 一度、黒く塗りつぶす
pos objax, objay // オブジェクトの位置
gcopy flag, 0, 0, objdx, objdy // オブジェクトの描画
redraw 1
}
await 1
loop
参考になれば嬉しいです。
ただもし、オブジェクトというのが、ボタンなどのコントロールのことを指しているのであれば、
USER32.DLLのWindowFromPoint関数と、HSP標準命令のobjinfo関数を使うのも
いいのではないかと思います。
(WindowFromPoint関数については、過去ログにあると思います)