VB DoEvents 语句的API升级版

引用内容 引用内容

Public Declare Function GetInputState Lib "user32" () As Long

Public Sub
newDoEvents()
'这个是比较简单,功能较少
        
If GetInputState() <> 0 then DoEvents
End Sub

'------------------------
Public Const QS_HOTKEY = &H80
Public Const QS_KEY = &H1
Public Const QS_MOUSEBUTTON = &H4
Public Const QS_MOUSEMOVE = &H2
Public Const QS_PAINT = &H20
Public Const QS_POSTMESSAGE = &H8
Public Const QS_SENDMESSAGE = &H40
Public Const QS_TIMER = &H10
Public Const QS_ALLINPUT = (QS_SENDMESSAGE Or QS_PAINT Or QS_TIMER Or QS_POSTMESSAGE Or QS_MOUSEBUTTON Or QS_MOUSEMOVE Or QS_HOTKEY Or QS_KEY)
Public Const QS_MOUSE = (QS_MOUSEMOVE Or QS_MOUSEBUTTON)
Public Const QS_INPUT = (QS_MOUSE Or QS_KEY)
Public Const QS_ALLEVENTS = (QS_INPUT Or QS_POSTMESSAGE Or QS_TIMER Or QS_PAINT Or QS_HOTKEY)
Public Declare Function GetQueueStatus Lib "user32" (ByVal qsFlags As Long) As Long

Public Function
cGetInputState()
'这个可以按自己的要求定义,接收到什么消息才DoEvents
    
Dim qsRet As Long
    
qsRet = GetQueueStatus(QS_HOTKEY Or QS_KEY Or QS_MOUSEBUTTON Or QS_PAINT)
    
if qsRet<>0 then DoEvents
End Function
'有了上面2个函数就不怕影响循环中的运算效率了
'它可以让你的程序循环速度比使用 DoEvents 更快


Ps:好像有人写过代码更短的,但是不是这个API,有时间测试一下到底哪个快。


[本日志由 JiaJia 于 2008-03-29 05:14 PM 编辑]
文章来自: VBGood
引用通告: 查看所有引用 | 我要引用此文章
Tags: VB API DoEvents
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.