Título: PeekMessage, WaitMessage (Ejemplo)
Publicado por: LeandroA en 11 Enero 2009, 23:59 pm
Hola estas son dos apis algo desconocidas, al menos para mi , y me llamaron mucho la atencion nos evitan de utilizar un sublcass, ya que usa un bucle interceptando el msg buscado. ademas este bucle no consume el CPU. pongo un ejemplito bien basico para interceptar la rueda del raton. Option Explicit
Private Const PM_REMOVE = &H1
Private Type POINTAPI x As Long y As Long End Type
Private Type Msg hwnd As Long Message As Long wParam As Long lParam As Long time As Long pt As POINTAPI End Type
Private 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 Private Declare Function WaitMessage Lib "user32" () As Long Private bCancel As Boolean
Private Const WM_MOUSEWHEEL = 522
Private Sub ProcessMessages() Dim Message As Msg Do While bCancel = False WaitMessage If PeekMessage(Message, Me.hwnd, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_REMOVE) Then If Message.wParam < 0 Then Debug.Print "Scroll Down" Else Debug.Print "Scroll Up" End If End If DoEvents Loop End Sub
Private Sub Form_Load() Me.Show ProcessMessages End Sub
Private Sub Form_Unload(Cancel As Integer) bCancel = True End Sub
Título: Re: PeekMessage, WaitMessage (Ejemplo)
Publicado por: aaronduran2 en 12 Enero 2009, 00:09 am
Muy interesante, la verdad.
Saludos ;)
Título: Re: PeekMessage, WaitMessage (Ejemplo)
Publicado por: Dessa en 12 Enero 2009, 00:13 am
Son buenas, no las conocía.
saludos
Título: Re: PeekMessage, WaitMessage (Ejemplo)
Publicado por: cassiani en 12 Enero 2009, 00:22 am
see esta muy bien Leandro ;)
|