请问有谁知DoEvents()函数有什么样的作用,

解决方案 »

  1.   

    你说的是vb中释放消息控制权的函数吧!???这是vc版!!!!
      

  2.   

    Public Type POINTAPI
            x As Long
            y As Long
    End Type
    Public Type MSG
        hwnd As Long
        message As Long
        wParam As Long
        lParam As Long
        time As Long
        pt As POINTAPI
    End Type
    Public Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
    Public Declare Function TranslateMessage Lib "user32" (lpMsg As MSG) As Long
    Public Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As MSG) As Long
    Public Const PM_REMOVE = &H1
    Public Const PM_NOREMOVE = &H0
    Public Const WM_QUIT = &H12
    Sub MyDoEvents(hwnd As Long)
        While PeekMessage(mMsg, Me.hwnd, 0, 0, PM_NOREMOVE) <> 0
            If mMsg.message <> WM_QUIT Then
                PeekMessage mMsg, Me.hwnd, 0, 0, PM_REMOVE
                TranslateMessage mMsg
                DispatchMessage mMsg
            End If
        Wend
    End Sub
    这是我写的一个模拟doevents的函数,你把它粘贴到一个模块中去,像使用doevent一样的去使用它就可以看出效果是一样的,只不过系统的Doevents函数考虑的事情更多,再次不加详述了,也难怪这种问题在vc的版子上发表,毕竟涉及了一些api的调用。
      

  3.   

    忘了,在函数的开头处添加声明 dim mMsg as MSG 把me.hwnd 改称 hwnd