注册 登录
编程论坛 VB6论坛

关于SUB的处理先后顺序

linandceline 发布于 2016-05-25 17:38, 2334 次点击
如果有一些SUB的相关条件是相同或类似的,这些SUB是怎么样的处理顺序

比如说,FORM_CLICK,FORM_MOUSEDOWN
一旦鼠标按下时,是先执行哪个呢?

又比如说:FORM_CLICK,FORM_MOUSEDOWN,LISTVIEW1_CLICK,LISTVIEW1_MOUSEDOWN
FORM层级和控件层级的一起时,又是先执行哪个呢?
8 回复
#2
renxiaoyao362016-05-25 18:22
你写个代码就可以得知了,这些可以自己学习的
举例:
程序代码:
Private Sub FORM_CLICK
Msgbox "Form_Click"
End Sub

Private Sub FORM_MOUSEDOWN
Msgbox "Form_MouseDown"
End Sub


这样,如果先出来的是Form_Click讯息,说明Click是第一优先级,反之亦然
#3
风吹过b2016-05-25 18:50
先是:FORM_MOUSEDOWN
然后是 FORM_MOUSEUP
最后是:FORM_CLICK

FORM_CLICK这个事件需要完整的 MOUSEDOWN 和 MOUSEUP ,才能触发。

点啥控件,就啥控件的事件触发,点窗体时,就是窗体的事件触发。

键盘事件有点例外。
#4
linandceline2016-05-26 10:20
回复 2楼 renxiaoyao36
我知道可以去试,终归规律或者规则还是要弄懂,谢谢
#5
linandceline2016-05-26 10:21
回复 3楼 风吹过b
以下是引用风吹过b在2016-5-25 18:50:04的发言:
FORM_CLICK这个事件需要完整的 MOUSEDOWN 和 MOUSEUP ,才能触发。


这个是我想要了解的东西,谢谢
#6
linandceline2016-05-26 11:31
回复 3楼 风吹过b
我刚又试了下,貌似又不是那么回事

DOWN与UP是冲突的

CLICK似乎只认UP,而DOWN是优先级最高的,但是处理完DOWN之后就完全跳过了UP跟CLICK

Private Sub Form_Click()
MsgBox "click"
End Sub

Private Sub Form_DblClick()
MsgBox "doubleclick"
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "down"
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "up"
End Sub
#7
wmf20142016-05-26 11:43
回复 6楼 linandceline
不能使用msgbox,它会拦截鼠标消息,用下述代码可以看到
Private Sub Form_Click()
  Print "click"
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Print "down"
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Print "up"
End Sub
结果是:
down
up
click
#8
xiangyue05102016-05-26 12:38
回复 6楼 linandceline
7楼说的对,不要用msgbox。用一个Textbox替代可以实现
#9
linandceline2016-05-26 13:47
回复 7楼 wmf2014
明白了,多谢
1