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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0210
新入りマウス非表示のままマウス位置を調整したい19解決


新入り

リンク

2014/2/10(Mon) 22:33:11|NO.59838


mouse -1 repeat : await : loop

↑しっかり消えたまま


mouse -1 : mouse 100,100 repeat : await : loop

↑oh...

どうしたらいいのでしょうか?
というか、パラメーターを省略した場合のみ非表示から表示に切り替わると書いてあるのに、パラメーター指定(しかも正数)した場合でも表示になってしまうのはバグですか?
それとも自分のミスでしょうか?(九割九分九厘こちらだと思いますが・・・)



この記事に返信する


新入り

リンク

2014/2/10(Mon) 22:34:01|NO.59839

というか別に下のループ文いりませんでしたね



check

リンク

2014/2/10(Mon) 22:37:15|NO.59840

調整してから消すのではダメなのか?



新入り

リンク

2014/2/10(Mon) 22:46:20|NO.59842

ループ内で何度も調整するので、調整後に消すって手段は使えないですね・・・。
また、調整してから消してをループでやると、カーソルがチカチカと見え隠れするのでよろしくないです。



MillkeyStars

リンク

2014/2/10(Mon) 22:53:32|NO.59845

あぁ、説明書には書かれていないけど、マウス非表示になるのは、自身が管理しているウィンドウ上のみだからね。
他のウィンドウ上及びデスクトップ上では、表示のままになるので注意。



新入り

リンク

2014/2/10(Mon) 22:56:26|NO.59846

ウィンドウ上のみというのは承知しています。



FunnyMaker

リンク

2014/2/10(Mon) 23:00:15|NO.59847

こんばんは。(お久しぶり。)

↓こういうのはどうでしょう?


#uselib "user32.dll" #func SetCursorPos "SetCursorPos" int,int #func ShowCursor "ShowCursor" int width , ,0,0 mes "1秒後にカーソルを消します。" mouse 100,100 wait 100 mouse -1 SetCursorPos 300,400 mes "出現まで2秒..." wait 200 mouse mes "出現しました。"



FunnyMaker

リンク

2014/2/10(Mon) 23:01:39|NO.59848

失礼。先ほどのコードの3行目は不要です。



新入り

リンク

2014/2/10(Mon) 23:15:16|NO.59851

>FunnyMakerさん

うーん、すみません、ちょっと違います。
やりたいのはこういうことです。


#define scrx ginfo(4) #define scry ginfo(5) #define cntx ginfo_winx/2 #define cnty ginfo_winy/2 // ここでマウス非表示 mouse -1 repeat // スペースキーを押したとき、マウスをウィンドウ中央へ // (※実際の中央とは若干ズレますが・・・) stick key if(key&16) : mouse scrx+cntx,scry+cnty //↑実行したときにマウスが表示されてしまう await loop



FunnyMaker

リンク

2014/2/10(Mon) 23:16:21|NO.59852

>kanahironさん

>それだとスクリーン座標指定なのでウィンドウをずらすとカーソルがおかしくなりません?

確かにそうですね。座標変換手段まで示した方が良かったですね。
方法はkanahironさんのモジュールまさにその通りです。



kanahiron

リンク

2014/2/10(Mon) 23:16:38|NO.59853

<文章もおかしかったので投稿しなおしました>

それだとスクリーン座標指定なのでウィンドウをずらすとカーソルがおかしくなりません?

#module #uselib "user32.dll" #func SetCursorPos "SetCursorPos" int, int #func ClientToScreen "ClientToScreen" int,int #deffunc setmouse int p1,int p2 Point = p1,p2 ClientToScreen hwnd,varptr(point) SetCursorPos point.0,point.1 return #global //以下サンプル mousef = 1 repeat x = rnd(640) y = rnd(480) setmouse x,y title strf("%03d,%03d",x,y) repeat 60 stick cli if cli{ if mousef = 0{ mouse mousef = 1 } else { mouse -1 mousef = 0 } } await 33 loop loop

mouseで座標を指定しているところをsetmouseに置き換えてください
サンプルは2秒ごとにカーソルがランダムで移動し、クリックすると
カーソル表示と非表示が入れ替わります

プログラムに組み込むときは、#moduleから#globalまでをスクリプトの頭に貼って下さい



新入り

リンク

2014/2/10(Mon) 23:20:25|NO.59854

>kanahironさん

おお、素晴らしいです!
しかし、やはり外部dllを呼ばないと出来ないことなのでしょうか?
出来ればリファレンス通り、mouse -1とmouseでのみ切り替えが出来るようにしてもらいたいものです。
何はともあれ、皆さんありがとうございました。



inovia

リンク

2014/2/10(Mon) 23:22:35|NO.59855

システムカウンタで管理されているのを利用してみるとか。


#define scrx ginfo(4) #define scry ginfo(5) #define cntx ginfo_winx/2 #define cnty ginfo_winy/2 // ここでマウス非表示 mouse -1 repeat // スペースキーを押したとき、マウスをウィンドウ中央へ // (※実際の中央とは若干ズレますが・・・) stick key if(key&16) : mouse -1 : mouse scrx+cntx,scry+cnty //↑実行したときにマウスが表示されてしまう await loop



kanahiron

リンク

2014/2/10(Mon) 23:24:53|NO.59856

その発想はなかったです…
さすがinoviaさん…



check

リンク

2014/2/10(Mon) 23:26:31|NO.59858

>やはり外部dllを呼ばないと出来ないことなのでしょうか?
使用しているDLLはWindowsなら必ずインストールされているから
特に気にする必用はないが、HSPのmouse命令だけでは氏のやりたいことは不可能だな。



暇人

リンク

2014/2/10(Mon) 23:28:22|NO.59859

mouse -1 は回数をカウントしていて
0にならないと表示されません
マウスカーソル座標設定で表示させたくないなら
移動させる前に更にmouse -1しておけば良い

randomize mouse -1 //とりあえずHSPウィンドウ上で非表示に(ここでカウント1) repeat 100 title ""+cnt stick k if k{end} color rnd(255),rnd(255),rnd(255) x=ginfo_wx1+rnd(560)+40 y=ginfo_wy1+rnd(400)+40 repeat 20 mouse -1 //移動前にもう一度非表示(ここでカウント2) mouse x+40-rnd(80),y+40-rnd(80)//(ここでカウント1なのでまだ非表示のまま) pos ginfo_mx-ginfo_wx1,ginfo_my-ginfo_wy1 mes "*" loop await 16 loop mouse //カウント0になり表示される



新入り

リンク

2014/2/10(Mon) 23:28:47|NO.59860

>inovia

あ・・・。
それ順番入れ替えると点滅もしませんね・・・。
位置調整の後に消すというのをループで回すのは試したのですが、その逆をやっておらず気づきませんでした。

点滅する

#define scrx ginfo(4) #define scry ginfo(5) #define cntx ginfo_winx/2 #define cnty ginfo_winy/2 mouse -1 repeat stick key if(key&128) : end mouse scrx+cntx,scry+cnty mouse -1 await loop
しない。

#define scrx ginfo(4) #define scry ginfo(5) #define cntx ginfo_winx/2 #define cnty ginfo_winy/2 mouse -1 repeat stick key if(key&128) : end mouse -1 mouse scrx+cntx,scry+cnty await loop

盲点でした・・・。



新入り

リンク

2014/2/10(Mon) 23:30:02|NO.59861

>inoviaさん
すみません敬称をつけ忘れていました。失礼しました。



暇人

リンク

2014/2/10(Mon) 23:30:47|NO.59862

動作テストしながら書き込んでる間に・・・



新入り

リンク

2014/2/10(Mon) 23:30:58|NO.59863

>暇人さん

なるほどそういうことでしたか。
納得いきました。



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