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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
1021
さすらいの旅人mousex、mouseyの座標について2解決


さすらいの旅人

リンク

2017/10/21(Sat) 16:54:53|NO.81626

親ウィンドウ(ID=0)から子ウィンドウ(ID=1)をSetParent関数によって生成し、その後マウスをクリックした場所によって処理を分岐させるコードを書いています。
そこで、ソースを書き上げ実行してみますと、子ウィンドウがアクティブになっているときは、なぜかmousex, mouseyの座標がどこをクリックしても変わらない状況となっています。
子ウィンドウにおいてはmousex,mouseyそれぞれ座標を取得できないのでしょうか。また、原点は子ウィンドウの左上か親ウィンドウの左上なのかもしっかり把握したいです。



この記事に返信する


いののて

リンク

2017/10/21(Sat) 18:36:25|NO.81628

mousexとmouseyは、gselで設定した操作先のウィンドウIDに保存されたマウス座標を読み出しますので、
onclickでジャンプした時に、gselでアクティブウィンドウIDを設定するといいです。
こんな感じ:

screen 1 screen 0 onclick gosub *onclk stop *onclk gsel ginfo(2) mes strf("X:%d Y=%d",mousex,mousey) return

>また、原点は子ウィンドウの左上か親ウィンドウの左上なのかもしっかり把握したいです。
原点は操作先のクライアントウィンドウ領域(タイトルバーとメニューバーを除く領域)の左上です。



さすらいの旅人

リンク

2017/10/21(Sat) 21:50:50|NO.81629

いののてさん、返信ありがとうございます。

>mousexとmouseyは、gselで設定した操作先のウィンドウIDに保存されたマウス座標を読み出します

なるほど、ウィンドウをアクティブにしないと正常に記録できないのですね。

>原点は操作先のクライアントウィンドウ領域(タイトルバーとメニューバーを除く領域)の左上です。

やはり子ウィンドウの左上が座標の原点でしたか。

提供してくださったスクリプトを実行してみたらすんなり動いてくれましたので、メカニズムを採用させていただきます。ありがとうございました。



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