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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0730
Dominoウィンドウのドラッグ操作8解決


Domino

リンク

2015/7/30(Thu) 17:14:51|NO.70334

再び本当にすいません、ウィンドウについて教えてもらいたいです。
ウィンドウをドラッグしているとき、「ドラッグされている」と表示、ドラッグを終了
したとき、「ドラッグ終了」と表示したいのですが、わかりません。
これが最後の質問です!お願いです教えてください!!!



この記事に返信する


窓月らら

リンク

2015/7/30(Thu) 17:46:02|NO.70335

ドラッグ終了は考えてみてください。

oncmd gosub *drag, 0x0112 // メッセージ割り込み repeat redraw 0 color 0,0,128: boxf // 青で全体塗り潰し redraw 1 await 17-(cnt\3=0) // 1/60秒ウエイト loop *drag color 0,0,0: boxf color 255,255,255: pos 270,220: mes "ドラッグ中..." return



窓月らら

リンク

2015/7/30(Thu) 17:53:18|NO.70336

oncmd の割り込みについては
「ウィンドウメッセージ」でgoogleなどで検索すれば資料がありますよ。
(HSPに限定した資料じゃなくてもいいです。)



Domino

リンク

2015/7/30(Thu) 18:38:39|NO.70338

どうしてもドラッグ終了の表示のしかたがわかりません。
知識などがないもんで... 教えてくださいお願いです!



Domino

リンク

2015/7/30(Thu) 20:32:15|NO.70340

お願いです!



スペース

リンク

2015/7/30(Thu) 20:38:35|NO.70341

窓月ららさんのソースコードはドラック中は画面が真っ黒で
離すと青色が表示されますよね。
ドラックが終了した時というのは、画面が黒から青に変わります。



窓月らら

リンク

2015/7/31(Fri) 00:44:04|NO.70363

*drag はドラッグを始めた最初の1回だけ実行されます。
以後、ドラッグが終わるまで repeat〜loop(無限ループ)は実行されません。
つまり、ドラッグ終了と同時に無限ループが再開されるわけですね。

これを利用し、*drag にジャンプしたときにフラグ(dragflag)を立てておいて、
ループ内でフラグを判定します。フラグが立っている(1)ならば
直前までドラッグしていたんだなと判定します。同時にフラグを解除します。

oncmd gosub *drag, 0x0112 // メッセージ割り込み repeat redraw 0 color 0,0,128: boxf // 青で全体塗り潰し color 255,255,255: pos 270,220: mes "Count = "+cnt if dragflag=1 { dialog "ドラッグ終了": dragflag=0 } redraw 1 await 17-(cnt\3=0) // 1/60秒ウエイト loop *drag dragflag=1 color 0,0,0: boxf color 255,255,255: pos 250,220: mes "ドラッグされている" return



窓月らら

リンク

2015/7/31(Fri) 01:14:30|NO.70364

あと、0x0112(WM_SYSCOMMAND)はドラッグ以外も色々と実行されるので
「ウィンドウを移動」に限定するなら 0x0003(WM_MOVE)にする。
ただし、この場合は移動するごとに *drag が実行される点に注意。

oncmd gosub *drag, 0x0003 // メッセージ割り込み



Domino

リンク

2015/7/31(Fri) 07:12:50|NO.70365

皆様、本当にありがとうございました。
おかげさまで、解決いたしました!本当にありがとうございました!



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