|
|
|
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
//------------------------------------------------------------------------------
| |
|