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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0331
科学太郎ウインドウ毎にマウス・クリックの割り込み処理を行うには?3解決


科学太郎

リンク

2017/3/31(Fri) 12:14:50|NO.78769

ウインドウ毎にマウス・クリックの割り込み処理を行うには、どのようにすれば良いのでしょうか?
次のサンプルでは、ウインドウ(0)〜ウインドウ(3)でマウスのクリックをすると「OnClickSub3」だけが処理されてるようです。
なぜ?

//------------------------------------------------------------------------------ // OnClickのテスト by 科学太郎 //------------------------------------------------------------------------------ //-------------------------------------- // メイン部 //-------------------------------------- *Main ;ウインドウ(0) screen 0,640,480,SCREEN_NORMAL:color $FF,$99,$00:boxf:color:title "ウインドウ(0)" onclick gosub *OnClickSub0 ;ウインドウ(1) screen 1,640,480,SCREEN_NORMAL:color $99,$FF,$00:boxf:color:title "ウインドウ(1)" onclick gosub *OnClickSub1 ;ウインドウ(2) screen 2,640,480,SCREEN_NORMAL:color $FF,$00,$99:boxf:color:title "ウインドウ(2)" onclick gosub *OnClickSub2 ;ウインドウ(3) screen 3,640,480,SCREEN_NORMAL:color $99,$00,$FF:boxf:color:title "ウインドウ(3)" onclick gosub *OnClickSub3 stop //-------------------------------------- // マウス・クリックの処理(0) //-------------------------------------- *OnClickSub0 mes "OnClickSub0" return //-------------------------------------- // マウス・クリックの処理(1) //-------------------------------------- *OnClickSub1 mes "OnClickSub1" return //-------------------------------------- // マウス・クリックの処理(2) //-------------------------------------- *OnClickSub2 mes "OnClickSub2" return //-------------------------------------- // マウス・クリックの処理(3) //-------------------------------------- *OnClickSub3 mes "OnClickSub3" return //------------------------------------------------------------------------------ // End of sample134(OnClickのテスト).hsp //------------------------------------------------------------------------------



この記事に返信する


わた雲

リンク

2017/3/31(Fri) 12:26:34|NO.78770

これでどうでしょう?


//------------------------------------------------------------------------------ // OnClickのテスト by 科学太郎 //------------------------------------------------------------------------------ //-------------------------------------- // メイン部 //-------------------------------------- *Main ;ウインドウ(0) screen 0,640,480,SCREEN_NORMAL:color $FF,$99,$00:boxf:color:title "ウインドウ(0)" ;ウインドウ(1) screen 1,640,480,SCREEN_NORMAL:color $99,$FF,$00:boxf:color:title "ウインドウ(1)" ;ウインドウ(2) screen 2,640,480,SCREEN_NORMAL:color $FF,$00,$99:boxf:color:title "ウインドウ(2)" ;ウインドウ(3) screen 3,640,480,SCREEN_NORMAL:color $99,$00,$FF:boxf:color:title "ウインドウ(3)" onclick gosub *OnClickSub stop *OnClickSub switch ginfo(2) //-------------------------------------- // マウス・クリックの処理(0) //-------------------------------------- case 0 gsel 0 mes "OnClickSub0" swbreak //-------------------------------------- // マウス・クリックの処理(1) //-------------------------------------- case 1 gsel 1 mes "OnClickSub1" swbreak //-------------------------------------- // マウス・クリックの処理(2) //-------------------------------------- case 2 gsel 2 mes "OnClickSub2" swbreak //-------------------------------------- // マウス・クリックの処理(3) //-------------------------------------- case 3 gsel 3 mes "OnClickSub3" swbreak swend //-------------------------------------------------------------------- // End of sample134(OnClickのテスト).hsp //------------------------------------------------------------------------------



わた雲

リンク

2017/3/31(Fri) 12:29:45|NO.78771

Onclick命令はウィンドウごとに指定できるものではないので、最後に指定された*Onclicksub3のみが反映されていました。
また、mesの前にgselがなかったので、これまた最後にscreenで呼び出されたwindow3のみにメッセージが表示されている状態です。
上記のプログラムでは、クリックした瞬間にどのウィンドウがアクティブであるかを判定し、
そのウィンドウにメッセージを表示するという方法をとっています。



科学太郎

リンク

2017/3/31(Fri) 13:14:27|NO.78772

わた雲さん。
ありがとうございました。

> Onclick命令はウィンドウごとに指定できるものではないので、最後に指定された*Onclicksub3のみが反映されていました。
原因はOnclick命令のサブルーチンは共通になる訳ですか。
なるほどね。

//------------------------------------------------------------------------------ // OnClickのテスト by 科学太郎 //------------------------------------------------------------------------------ //-------------------------------------- // メイン部 //-------------------------------------- *Main ;ウインドウ(0) screen 0,640,480,SCREEN_NORMAL:color $FF,$99,$00:boxf:color:title "ウインドウ(0)" onclick gosub *OnClickSub ;ウインドウ(1) screen 1,640,480,SCREEN_NORMAL:color $99,$FF,$00:boxf:color:title "ウインドウ(1)" onclick gosub *OnClickSub ;ウインドウ(2) screen 2,640,480,SCREEN_NORMAL:color $FF,$00,$99:boxf:color:title "ウインドウ(2)" onclick gosub *OnClickSub ;ウインドウ(3) screen 3,640,480,SCREEN_NORMAL:color $99,$00,$FF:boxf:color:title "ウインドウ(3)" onclick gosub *OnClickSub stop //-------------------------------------- // マウス・クリックの処理 //-------------------------------------- *OnClickSub switch ginfo_act case 0:gsel 0:mes "OnClickSub":swbreak case 1:gsel 1:mes "OnClickSub":swbreak case 2:gsel 2:mes "OnClickSub":swbreak case 3:gsel 3:mes "OnClickSub":swbreak swend return //------------------------------------------------------------------------------ // End of sample134(OnClickのテスト).hsp //------------------------------------------------------------------------------



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