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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0808
kanahironドラッグアンドドロップとstickについて2解決


kanahiron

リンク

2014/8/8(Fri) 02:16:33|NO.63556

説明が難しいのですが

repeat stick sti,256 title ""+sti +" "+clicnt+" "+cnt2+ " "+mousex+" "+mousey if sti = 256 & clicnt = 0 { clicnt++ } if sti = 0 & clicnt = 1 { dialog clicnt = 0 } cnt2++ await 16 loop stop
このソースはウィンドウがクリックされ、離した時にダイアログがでるとても単純なものです
このウィンドウにD&Dしようとするとおかしな動作になります(D&D許可していませんが同じです)

windowsの仕様なのか、Explorerからドラッグするとそれまで最前列だったウィンドウがアクティブになるようです
そのアクティブになったウィンドウの挙動がよくわかりません

HSPはアクティブではない時もmousexなどで座標を返しますが、ドラッグ中はアクティブでもなぜか止まります
しかしHSPそのものは動いています(上記ソースのcnt2)

またそのアクティブになった瞬間にstick命令は256を返します
つまり、ファイルをドラッグしようとしただけでクリックしたことになり、
(HSPのウィンドウ上に)ドロップをしてなくてもクリックを離したことになります(=dialogが出る)

この現象を回避する方法はあるでしょうか
HSP内のドラッグ処理(自作)が誤反応してしまい困っています

ファイルのD&Dで
if sti = 256 & clicnt = 0 {
clicnt++ }
のカウントが増えるのを防ぎたいです



この記事に返信する


MonoChrome

リンク

2014/8/8(Fri) 03:01:55|NO.63557

こんなかんじでどうでしょうか

repeat stick sti,256 title ""+sti +" "+clicnt+" "+cnt2+ " "+mousex+" "+mousey if sti = 256 & clicnt = 0 { clicnt++ } if ginfo_act = -1 : winact = -1 ;非アクティブの時フラグを立てる if sti = 0 & clicnt = 1 { if winact = 0 : dialog ;フラグが立っていなければダイアログを表示 if winact = -1 : winact = 0 ;フラグが立っていればフラグを解除する clicnt = 0 } cnt2++ await 16 loop stop



kanahiron

リンク

2014/8/11(Mon) 18:53:47|NO.63714

MonoChromeさん回答有難うございます
しかしウィンドウのアクティブを検出する方法はダメでした…
おそらくD&Dの割り込み処理が原因ですね…

今は暫定的に別の方法を使っています
きれいじゃないので使いたくはないのですがしばらくはそっちでやろうと思います

P.S.
寝ぼけていたようでスレの種類が「仲間に入れて!」になってるorz



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