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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1130
TAKAマウスカーソルがウィンドウ上にあるときだけ、クリックに反応させたい4解決


TAKA

リンク

2012/11/30(Fri) 22:12:03|NO.50967

ADVゲームを作っているのですが、ウィンドウ上にマウスカーソルがある時のみ、
クリックなどでページ送りをさせたいのです。

ウィンドウの大きさが800,600で、

getkey p1,1

if (p1 == 1)&&( mousex >= 0)&&( mousey >= 0)&&( mousex <= 800)&&( mousey <= 600){

//ここにさせたい反応

}

こういう風に書いていたんですが、ウィンドウ上に無いときでもページ送りが発生してしまいます。
x=mousex,y=mouseyとして、デバックウィンドウでカーソルの座標を調べたところ、
マウスがウィンドウ上に乗っていない場合でも、マウスがウィンドウ上にあるような数値になります。(Xは800以内、yは600以内)
どうやれば、マウスカーソルがウィンドウ上にあるときだけ、クリックやその他キーを押した状態に反応するようにできますか?



この記事に返信する


cats

リンク

2012/11/30(Fri) 22:27:20|NO.50968

ウィンドウからマウスポインタが外れるとmousex,mouseyには
最後にウィンドウ上にマウスポインタがあった位置が
入ります。
よって、ginfo(0)とginfo(1)を上手に使う手もありますが
stick命令を使う方が手っ取り早いと思います。

stick p1,256 if (p1 == 256){ //ここにさせたい反応 }



spider

リンク

2012/11/30(Fri) 23:16:52|NO.50970

>ウィンドウ上にマウスカーソルがある時のみ
とおっしゃっていますが、そのウィンドウがアクティブの時のみ
っということでしょうか。catsさんはそうとらえたようですね。

私もそうだと仮定して話を進めますと、
>クリックなどで
と書かれていますので、getkeyのほかのキーの時でもできるようにする方法を書きます。


#uselib "user32.dll" #cfunc GetActiveWindow "GetActiveWindow" repeat getkey p1, 36 if (GetActiveWindow() = hwnd && p1 = 1){ title "PUSH" }else{ title "" } await 10 loop
上のコードはHomeキーでの例です。
上の二行はもしわからないならまだわからないままで結構です。
if命令のところもです。



謎の人

リンク

2012/11/30(Fri) 23:35:47|NO.50971

ginfo_mxとginfo_wx1とかを使えばいいんじゃないでしょうか?


repeat color 255,255,255:boxf getkey p1,1 if p1=1&ginfo_wx1<ginfo_mx&ginfo_wy1<ginfo_my&ginfo_wx2>ginfo_mx&ginfo_wy2>ginfo_my:{ color:pos 0,0:mes "押されています" } wait 2 loop



TAKA

リンク

2012/12/1(Sat) 02:55:42|NO.50972

御三方ともありがとうございました。
無事解決いたしました。

>catsさん
ginfoというキーワードを出していただいてありがとうございました。
おかげさまでそういったものがあるということを知れました。

>spiderさん
まだまだ未熟ですので、win32apiに手を出すのはやめときます。
もう少し勉強してから挑戦してみます。

>謎の人さん
マクロ(?)を使ったのは初めてだったのですか、上手くいきました。
ご指導ありがとうございました。



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