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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0812
y.tack複数のウィンドゥをマウスで操作出来ますか?8解決


y.tack

リンク

2015/8/12(Wed) 21:26:54|NO.70673

2.61のクックブックの中のマップエディターで
MAPを埋めるウィンドゥと
チップを選択するウィンドゥで
マウス操作を切り替えてて
そのスクリプトを3.xに移植しようとしてるんですが上手く出来ません

サンプルにそれの3.x版があるんですが
マウスで操作するウィンドゥは一つしかなくて

ということで
複数のウィンドゥをマウスで操作出来ますか?
という質問です



この記事に返信する


暇人

リンク

2015/8/13(Thu) 01:22:46|NO.70682

oncmdとか使わないで簡単に済ますならこんな感じ

repeat 480/16 gradf 0,cnt*16,640,16,0,$ff<<cnt,$ff000000>>cnt loop screen 1,640,480,,ginfo_wx2,ginfo_wy1 gsel 0,1 repeat repeat 2//使用してるのがID0とID1として gsel cnt if (ginfo_mx>ginfo_wx1) and (ginfo_mx<ginfo_wx2) and (ginfo_my>ginfo_wy1) and (ginfo_my<ginfo_wy2) {//マウスカーソルがある方のウィンドウを操作先にしたまま抜ける break } loop getkey mlc,1 if mlc { if ginfo_sel=0 { pget mousex,mousey r=ginfo_r:g=ginfo_g:b=ginfo_b }else{ color r,g,b gradf mousex-8,mousey-8,16,16 } } await 16 loop
左のウィンドウで左クリックすると色を拾って
右のウィンドウで左クリックすると拾った色で四角を描画



y.tack

リンク

2015/8/13(Thu) 08:19:31|NO.70683

サンプルスクリプトありがとうございます

実現出来るけどサンプルにふさわしいほど簡単には出来ない
みたくは思ったんですよね(APIとか使って)



y.tack

リンク

2015/8/13(Thu) 08:50:56|NO.70685

ウィンドゥが重なっててもちゃんと動くのか少し不安になったんで
試してみたら
ウィンドゥが重なってると
>拾った色で四角を描画
が機能しないみたいです



暇人

リンク

2015/8/13(Thu) 15:13:40|NO.70696

重なってるかどうかの検出も簡単
breakせずにマウスカーソルの下にあるウィンドウを数えれば良い

repeat 480/16 gradf 0,cnt*16,640,16,0,$ff<<cnt,$ff000000>>cnt loop screen 1,640,480,,ginfo_wx2,ginfo_wy1 gsel 0,1 repeat wincnt=0 //マウスカーソルの下にあるHSPウィンドウの数 repeat 2 //連続したIDでクリックした時にアクティブになるウィンドウを操作先にするだけなら3つ以上も可 gsel cnt if (ginfo_mx>ginfo_wx1) and (ginfo_mx<ginfo_wx2) and (ginfo_my>ginfo_wy1) and (ginfo_my<ginfo_wy2) {//操作先ウィンドウ上にマウスカーソルがある winsel = cnt //cntをウィンドウIDとして保持 wincnt++ } loop if wincnt {//どちらかのウィンドウにマウスカーソルがある if wincnt>1 {//重なってる領域にマウスカーソルがある if ginfo_act>=0 {gsel ginfo_act}//アクティブ(通常上にあるウィンドウ)なウィンドウを操作先にする }else{//重なってないウィンドウ内にマウスカーソルがある gsel winsel //wincntが1なのでwinselに入ってるIDを捜査先にする } getkey mlc,1 if mlc { switch ginfo_sel case 0 pget mousex,mousey r=ginfo_r:g=ginfo_g:b=ginfo_b swbreak case 1 color r,g,b gradf mousex-8,mousey-8,16,16 swbreak default swbreak swend } title ""+mousex+" "+mousey } await 16 loop



暇人

リンク

2015/8/13(Thu) 16:04:48|NO.70698

onclickとoncmdを使った方法
これだと複数重なっててもマウスカーソル下のウィンドウを操作先に出来る

repeat 480/16 gradf 0,cnt*16,640,16,0,$ff<<cnt,$ff000000>>cnt loop onclick gosub *_click oncmd gosub *_MOUSEMOVE,$200 //WM_MOUSEMOVE screen 1,640,480,,ginfo_wx2,ginfo_wy1 gsel 1,1 //確実にウィンドウをアクティブにしないと前のウィンドウにoncmd命令が使われてしまうようなので oncmd gosub *_MOUSEMOVE,$200 screen 2,128,128 gsel 2,1 oncmd gosub *_MOUSEMOVE,$200 gsel 2,2 gsel 0,1 stop *_CLICK if ginfo_act ! ginfo_sel {gsel ginfo_act}//HSPウィンドウ内でクリックされた時に操作先が別IDだったらアクティブなウィンドウを操作先にする gosub *draw return *_MOUSEMOVE gsel ginfo_intid gosub *draw return *draw getkey mlc,1 if mlc { switch ginfo_sel case 0 pget mousex,mousey r=ginfo_r:g=ginfo_g:b=ginfo_b swbreak case 1 color r,g,b gradf mousex-8,mousey-8,16,16 swbreak case 2 color r,g,b gradf mousex-8,mousey-8,16,16 swbreak default swbreak swend } title ""+mousex+" "+mousey return



y.tack

リンク

2015/8/13(Thu) 16:50:27|NO.70701

更にサンプルスクリプトありがとうございます
なんか難しそうなサンプルスクリプト提示されて
理解するの大変そうだなーって思ってた状況が自分にw
(ちょっとふざけ気味ですいません)

>//連続したIDでクリックした時にアクティブになるウィンドウを操作先にするだけなら3つ以上も可
クックブックのエディタはマウス操作可2つとボタンとか操作するウィンドゥがあるので
ウィンドゥ3つとして計算した方がいいですか?
操作可2つ+メモ帳でも試しましたが
大丈夫そうなので 対象はアプリ内で使用するウィンドゥのみですか?

このTOOLを二つ起動して試してみましたが
アプリ内2つとか3つとかぽいですね

アレ呼んだりコレ呼んだり大変そうなので
>NO.70696 を
使おうかな?と思ってますが
他に不具合の出そうな状況はありますか?



暇人

リンク

2015/8/13(Thu) 19:02:33|NO.70706

>他に不具合の出そうな状況はありますか?
エディタの作りでどうにでもなるので分からない



tes

リンク

2015/8/14(Fri) 20:32:18|NO.70750

テスかきこ



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.70673への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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