函数原型:
BOOl TrackMouseEvent(
LPTRACKMOUSEEVENT lpEventTrack //pointer to a TRACKMOUSEVERN structure
);
函数说明
当鼠标指针离开一个窗口或者是在给定数据内经过一个窗口时,该函数向指向窗口发送消息。参数说明
lpEventTrack:指向一个类型为TrackMouseEvent的变量。(该变量是什么类型?)希望用过这个函数的朋友给个例子,在VBAPI声明器上面没有这个函数的声明
BOOl TrackMouseEvent(
LPTRACKMOUSEEVENT lpEventTrack //pointer to a TRACKMOUSEVERN structure
);
函数说明
当鼠标指针离开一个窗口或者是在给定数据内经过一个窗口时,该函数向指向窗口发送消息。参数说明
lpEventTrack:指向一个类型为TrackMouseEvent的变量。(该变量是什么类型?)希望用过这个函数的朋友给个例子,在VBAPI声明器上面没有这个函数的声明
WM_MOUSELEAVE消息的,演示的是鼠标移出一个Button时的情形。Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As String) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias _
"CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal _
hwnd As Long, ByVal Msg As Long, ByVal wParam As _
Long, ByVal lParam As Long) As Long
Const GWL_WNDPROC = (-4&)Dim PrevWndProc&Private Const WM_DESTROY = &H2
Public Declare Function TrackMouseEvent Lib "user32" (lpEventTrack As TRACKMOUSEEVENTTYPE) As LongPublic Const TME_CANCEL = &H80000000
Public Const TME_HOVER = &H1&
Public Const TME_LEAVE = &H2&
Public Const TME_NONCLIENT = &H10&
Public Const TME_QUERY = &H40000000Private Const WM_MOUSELEAVE = &H2A3&Public Type TRACKMOUSEEVENTTYPE
cbSize As Long
dwFlags As Long
hwndTrack As Long
dwHoverTime As Long
End TypePublic bTracking As Boolean
Dim evtTrack As TRACKMOUSEEVENTTYPE
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Private Function SubWndProc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) _
As Long If Msg = WM_DESTROY Then Terminate (hwnd) '处理鼠标移出消息
If Msg = WM_MOUSELEAVE Then
bTracking = False
Form1.Print "The mouse left the form!"
End If
SubWndProc = CallWindowProc(PrevWndProc, hwnd, Msg, wParam, lParam)
End FunctionPublic Sub Init(hwnd As Long)
PrevWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf SubWndProc)
End SubPublic Sub Terminate(hwnd As Long)
Call SetWindowLong(hwnd, GWL_WNDPROC, PrevWndProc)
End Sub' -- 模块结束 -- '2. 窗体中处理需要加入的代码:Option ExplicitPrivate Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If bTracking = False Then
bTracking = True
Dim ET As TRACKMOUSEEVENTTYPE
'initialize structure
ET.cbSize = Len(ET)
ET.hwndTrack = Command1.hwnd
ET.dwFlags = TME_LEAVE
'start the tracking
TrackMouseEvent ET
End If
End SubPrivate Sub Form_Load()
Call Init(Command1.hwnd)
End SubPrivate Sub Form_Unload(Cancel As Integer)
Call Terminate(Command1.hwnd)
End Sub