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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0725
科学太郎onclickとoncmdの使い分けについて3解決


科学太郎

リンク

2017/7/25(Tue) 17:23:03|NO.80706

・ウインドウ毎にマウス・クリックの割り込み処理を行うには?
http://hsp.tv/play/pforum.php?mode=pastwch&num=78769

この質問の続きです。

上記の質問より、複数のウインドウでマウス・クリックを処理するには、
onclick で指定したラベル内で ginfo_act による分岐処理を行えば良い。

それではウインドウ毎に oncmd で WM_LBUTTONDOWN メッセージを設定した場合は
ウインドウ毎にジャンプ先のラベルを複数個用意可能なのか?

まとめると onclick が複数ウインドウで共通のジャンプ先で、
oncmd が複数ウインドウで、それぞれ別々にジャンプ先を指定できるのか?



この記事に返信する


科学太郎

リンク

2017/7/25(Tue) 21:47:54|NO.80707

色々実験してサンプルを作ってみました。

//------------------------------------------------------------------------------ // OnClickのテスト by 科学太郎 //------------------------------------------------------------------------------ //-------------------------------------- // 記号定数(API定数) //-------------------------------------- #const global WM_LBUTTONDOWN $00000201 #const global WM_LBUTTONUP $00000202 #const global WM_LBUTTONDBLCLK $00000203 //-------------------------------------- // メイン部 //-------------------------------------- *Main ;ウインドウ(0) screen 0,320,240,SCREEN_NORMAL,0,240*0:color $FF,$99,$00:boxf:color:title "ウインドウ(0)" oncmd gosub *OnClickSub0, WM_LBUTTONDOWN ;ウインドウ(1) screen 1,320,240,SCREEN_NORMAL,0,240*1:color $99,$FF,$00:boxf:color:title "ウインドウ(1)" oncmd gosub *OnClickSub1, WM_LBUTTONDOWN ;ウインドウ(2) screen 2,320,240,SCREEN_NORMAL,0,240*2:color $FF,$00,$99:boxf:color:title "ウインドウ(2)" oncmd gosub *OnClickSub2, WM_LBUTTONDOWN ;ウインドウ(3) screen 3,320,240,SCREEN_NORMAL,0,240*3:color $99,$00,$FF:boxf:color:title "ウインドウ(3)" oncmd gosub *OnClickSub3, WM_LBUTTONDOWN stop //-------------------------------------- // マウス・クリックの処理(0) //-------------------------------------- *OnClickSub0 gsel ginfo_intid mes strf("OnClickSub0=%d",ginfo_intid) return //-------------------------------------- // マウス・クリックの処理(1) //-------------------------------------- *OnClickSub1 gsel ginfo_intid mes strf("OnClickSub1=%d",ginfo_intid) return //-------------------------------------- // マウス・クリックの処理(2) //-------------------------------------- *OnClickSub2 gsel ginfo_intid mes strf("OnClickSub2=%d",ginfo_intid) return //-------------------------------------- // マウス・クリックの処理(3) //-------------------------------------- *OnClickSub3 gsel ginfo_intid mes strf("OnClickSub3=%d",ginfo_intid) return //------------------------------------------------------------------------------ // End of sample134d1(OnClickのテスト).hsp //------------------------------------------------------------------------------

oncmd ならば、ウインドウ毎にジャンプ先のラベルを指定可能なようだ。


//------------------------------------------------------------------------------ // OnClickのテスト by 科学太郎 //------------------------------------------------------------------------------ //-------------------------------------- // 記号定数(API定数) //-------------------------------------- #const global WM_LBUTTONDOWN $00000201 #const global WM_LBUTTONUP $00000202 #const global WM_LBUTTONDBLCLK $00000203 //-------------------------------------- // メイン部 //-------------------------------------- *Main ;ウインドウ(0) screen 0,320,240,SCREEN_NORMAL,0,240*0:color $FF,$99,$00:boxf:color:title "ウインドウ(0)" onclick gosub *OnClickSub0 ;ウインドウ(1) screen 1,320,240,SCREEN_NORMAL,0,240*1:color $99,$FF,$00:boxf:color:title "ウインドウ(1)" onclick gosub *OnClickSub1 ;ウインドウ(2) screen 2,320,240,SCREEN_NORMAL,0,240*2:color $FF,$00,$99:boxf:color:title "ウインドウ(2)" onclick gosub *OnClickSub2 ;ウインドウ(3) screen 3,320,240,SCREEN_NORMAL,0,240*3:color $99,$00,$FF:boxf:color:title "ウインドウ(3)" onclick gosub *OnClickSub3 stop //-------------------------------------- // マウス・クリックの処理(0) //-------------------------------------- *OnClickSub0 gsel ginfo_act mes strf("OnClickSub0=%d",ginfo_act) return //-------------------------------------- // マウス・クリックの処理(1) //-------------------------------------- *OnClickSub1 gsel ginfo_act mes strf("OnClickSub1=%d",ginfo_act) return //-------------------------------------- // マウス・クリックの処理(2) //-------------------------------------- *OnClickSub2 gsel ginfo_act mes strf("OnClickSub2=%d",ginfo_act) return //-------------------------------------- // マウス・クリックの処理(3) //-------------------------------------- *OnClickSub3 gsel ginfo_act mes strf("OnClickSub3=%d",ginfo_act) return //------------------------------------------------------------------------------ // End of sample134d2(OnClickのテスト).hsp //------------------------------------------------------------------------------

onclick では、最後に設定した OnClickSub3 ラベルにしかジャンプしないようだ。

●結果報告
ウインドウ毎にジャンプ先を指定するには oncmd で可能なようだ。
onclick、onkey などは screen 命令の前で1回だけ実行すれば良いらしい。
つまり、ウインドウ毎に onclick、onkey などを設定しなくても良い。


//------------------------------------------------------------------------------ // OnClickのテスト by 科学太郎 //------------------------------------------------------------------------------ //-------------------------------------- // メイン部 //-------------------------------------- *Init onclick gosub *OnClickSub *Main screen 0,640,480,SCREEN_NORMAL:color $FF,$99,$00:boxf:color:title "ウインドウ(0)" screen 1,640,480,SCREEN_NORMAL:color $99,$FF,$00:boxf:color:title "ウインドウ(1)" screen 2,640,480,SCREEN_NORMAL:color $FF,$00,$99:boxf:color:title "ウインドウ(2)" screen 3,640,480,SCREEN_NORMAL:color $99,$00,$FF:boxf:color:title "ウインドウ(3)" stop //-------------------------------------- // マウス・クリックの処理 //-------------------------------------- *OnClickSub if(ginfo_act<0):return gsel ginfo_act if(ginfo_act==0):mes "OnClickSub":return if(ginfo_act==1):mes "OnClickSub":return if(ginfo_act==2):mes "OnClickSub":return if(ginfo_act==3):mes "OnClickSub":return return //------------------------------------------------------------------------------ // End of sample134c(OnClickのテスト).hsp //------------------------------------------------------------------------------
> それではウインドウ毎に oncmd で WM_LBUTTONDOWN メッセージを設定した場合は
> ウインドウ毎にジャンプ先のラベルを複数個用意可能なのか?
複数個の用意が可能なようだ。

自己解決しましたのでチェックしますが、
何か補足説明がありましたらアドバイスなどを募集します。



沢渡

リンク

2017/7/26(Wed) 16:51:35|NO.80708

oncmdがウィンドウ別に設定されるとは初めて知りました。勉強になります。

ちょっと気になったので、最初のコードのstopの前にoncmd 0を入れてみたところ、
全てのウィンドウのoncmd割り込みが無効になりました。
oncmd 0や1は、どのウィンドウで実行したかに関係なく、全てのoncmd割り込みのON/OFFを切り替えるようです。



科学太郎

リンク

2017/7/26(Wed) 20:56:56|NO.80709

> oncmd 0や1は、どのウィンドウで実行したかに関係なく、
> 全てのoncmd割り込みのON/OFFを切り替えるようです。
やはりそうですか。
この挙動を予想はしてましたが…。



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