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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0323
roppyakukee【お急ぎ】実行ファイルにするとclipcursorが効かない?9解決


roppyakukee

リンク

2014/3/23(Sun) 22:10:36|NO.60878

以下はクリップカーソルの・・・アレです。
#uselib "user32.dll"
;クリップカーソル
#func global ClipCursor "ClipCursor" sptr
clip = ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2,ginfo_dispx/2+winx/2,ginfo_dispy/2+winy/2
ClipCursor varptr(clip)

user32.as使うと内部エラーが出て意味フだったんで、
こうしたんです。

HSPエディタ上ではクリップ効いているのに実行ファイルにすると・・・。
以前コンパイルしたやつと混じってんのかな〜と思ったけど
再び実行ファイルを作ってみるもクリップ効いていない。



この記事に返信する


roppyakukee

リンク

2014/3/23(Sun) 23:29:49|NO.60881

kanahironさんのサンプル、これを実行ファイルにしてみるとちゃんと動作します。

#include "user32.as" onclick *end_ bgscr 0,ginfo(20),ginfo(21),0,0,0 gsel 0,2 clip = 100,100,300,300 ClipCursor varptr(clip) repeat redraw 0 color 255,255,255 boxf color boxf clip(0),clip(1),clip(2),clip(3) color 255,255,255 boxf clip(0)+1,clip(1)+1,clip(2)-1,clip(3)-1 color pos 0,0 mes strf("%04d,%04d",mousex,mousey) redraw 1 await 7 loop stop *end_ ClipCursor 0 end

なにか他のプラグインやら何やらと干渉してるのかな・・・と思うのですが
モジュール開いてみても理解にまでは至らず・・・
使用しているプラグインは確か、keyhook.dllとhspogg.dllだけ。強いて言えばuser32.dllも。

#include "a2d.hsp";PNG読み込み #include "llmod3/llmod3.hsp";拡張ダイアログ #include "llmod3/msgdlg.hsp" #include "hspogg.as";dmmplay系 #include "keyhook.hsp";キーフック #uselib "user32.dll";guiオブジェ,監視,クリップ等



shiva

リンク

2014/3/23(Sun) 23:55:37|NO.60882

NO.60878の

clip = ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2,ginfo_dispx/2+winx/2,ginfo_dispy/2+winy/2
で使用している winx と winy の値、代入された clip 変数の値は期待通りになっていますか?

もし winx と winy がウインドウサイズを指し示すシステム変数のつもりなら、
代わりに ginfo_winx と ginfo_winy を使う必要があります。
(HSP2互換モードなら別)



MillkeyStars

リンク

2014/3/23(Sun) 23:59:11|NO.60883

ほえ?これじゃ、制限できないと思うけど・・・

clip = ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2,ginfo_dispx/2+winx/2,ginfo_dispy/2+winy/2 mes ""+clip(0) mes ""+clip(1) mes ""+clip(2) mes ""+clip(3)



暇人

リンク

2014/3/24(Mon) 00:14:18|NO.60884

ClipCursorは移動したりリサイズされたり
ウィンドウに動きがあると自動で無効にされる

だからウィンドウに動きがあったら再度ClipCursorする必要がある

#uselib "user32.dll" ;クリップカーソル #func global ClipCursor "ClipCursor" sptr #func global ClipCursor_end "ClipCursor" nullptr onexit *exit #define WM_CREATE 0x0001 #define WM_MOVE 0x0003 #define WM_SIZE 0x0005 #define WM_SETFOCUS 0x0007 #define WM_KILLFOCUS 0x0008 oncmd gosub *wm,0x0001 //screen実行時 oncmd gosub *wm,0x0003 //ウィンドウ移動時 oncmd gosub *wm,0x0005 //リサイズ時 oncmd gosub *wm,0x0007 //キーボードフォーカスを得た時 winx=1000 winy=2000 clip = ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2,ginfo_dispx/2+winx/2,ginfo_dispy/2+winy/2 gosub *wm stop *wm ClipCursor varptr(clip) return *exit oncmd 0 //念のため割り込みOFF ClipCursor_end end
自分にフォーカスが無い状態でも制限したい場合は工夫が必要



shiva

リンク

2014/3/24(Mon) 00:15:12|NO.60885

もしかしてhttp://hsp.tv/play/pforum.php?mode=all&num=60845の話ですかね。
そっちは見てませんでした。

HSPはマルチスクリーンに対応してません。
ginfo系で取得できるスクリーンの値は、すべてプライマリスクリーンのものです。
どうしても対応させたければ、自力でどうにかしてやる必要がありますが、結構面倒です。

ところで、これを言うと元も子もないのですが、
WindowsのショートカットキーにWin+Lというものがありまして…



roppyakukee

リンク

2014/3/24(Mon) 00:21:55|NO.60886

うーん、ノーパソなんでディスプレイは一個だけです。
マルチは買っても指示だせないんですね。orz

以下は、問題のプログラムの1行目からテキトウにコピペしたもの。

onerror goto *errend onexit gosub *goodbye /**----------------------------------**/ #define tNAME "Screen Operation Interference" #define VER "0.01" /**----------------------------------**/ ;パックファイル #pack "se01.wav" #pack "se02.wav" ; #pack "se03.wav" #pack "se04.wav" #pack "se05.wav" ;インクルード #include "a2d.hsp";PNG読み込み #include "llmod3/llmod3.hsp";拡張ダイアログ #include "llmod3/msgdlg.hsp" #include "hspogg.as";dmmplay系 #include "keyhook.hsp";キーフック #uselib "user32.dll";guiオブジェ,監視,クリップ等 ;初期設定 #packopt hide 1 #const winx 300 #const winy 200 ;クリップカーソル #func global ClipCursor "ClipCursor" sptr clip = ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2,ginfo_dispx/2+winx/2,ginfo_dispy/2+winy/2 ClipCursor varptr(clip) bgscr 0,winx,winy,,ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2 title tname screen 3,300,400,2 title "デバックウィンドウ" gsel 0
汚いスクでお恥ずかしい限り。
枠なしウィンドウなんでD&Dもできないし、
暇人さんの言う自動で解除されてしまうアレにも該当しないかも・・・

すみませんよくわかりません。



暇人

リンク

2014/3/24(Mon) 00:27:25|NO.60888

>暇人さんの言う自動で解除されてしまうアレにも該当しないかも・・・

> bgscr 0,winx,winy,,ginfo_dispx/2-winx/2,ginfo_dispy/2-winy/2
これが自動で解除されるのに該当してます

なのでNO.60884には
>oncmd gosub *wm,0x0001 //screen実行時
を入れてる



roppyakukee

リンク

2014/3/24(Mon) 00:29:24|NO.60889

あ。





最近高校二次募集とかアレとか色々あって疲れてんだろうな。
今月はこの掲示板に顔出さないほうがいいかもしんない。
気がつけば人に聞いてる頼ってる自分が怖くなってきた。



暇人

リンク

2014/3/24(Mon) 00:29:26|NO.60890

NO.60884の#defineは後で削除しようと思って忘れてた・・・



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