trackmouseevent :Posts messages when the mouse pointer leaves window or hovers over a window for a specified amount of time
پست کردن پیام هایی به پرنت ویندو وقتی نشانگر ماوس پنجره را ترک کرده ( هندل به ویندو ) یا روی یک پنجره برای مدتی از زمان بصورت شناور است ( می پلکد- یا روی آن محدوده).
API Declarations'
Public Type udtTrackMouseEvent
cbSize As Long
dwFlags As Long
hwndTrack As Long
dwHoverTime As Long
End Type
Public Declare Function TrackMouseEvent Lib "comctl32" Alias "_TrackMouseEvent" (lpEventTrack As udtTrackMouseEvent) As Long
Dim TheButtonToggle As Boolean
TheButtonToggle=false
ButtonSubclass(hWnd,uMsg,wParam,lParam,uIdSubclass,dwRefData
(
Select Case uMsg
case WM_MOUSEMOVE
if (TheButtonToggle=false) Then
(tm_Event.cbSize =Len(TRACKMOUSEEVENT
tm_Event.dwFlags=TME_LEAVE
(tm_Event.hwndTrack=GetDlgItem((HWND)dwRefData,IDC_TheButton
TrackMouseEvent tm_Event
TheButtonToggle=true
hBit =LoadImage(0,MAKEINTRESOURCE(IDB_ButtonWhenMouseIsOver
(IMAGE_BITMAP,90,49,0,
SendMessage GetDlgItem((HWND)dwRefData
IDC_TheButton),STM_SETIMAGE,IMAGE_BITMAP,ByVal
(hBit
End If
case WM_MOUSELEAVE
hBit=LoadImage(0
(MAKEINTRESOURCE(IDB_ButtonAtRest
(IMAGE_BITMAP,90,49,0,
SendMessage GetDlgItem((HWND)dwRefData
IDC_TheButton),STM_SETIMAGE,IMAGE_BITMAP,ByVal
(hBit
TheButtonToggle = false
case WM_LBUTTONDOWN
,hBit=LoadImage(0
(MAKEINTRESOURCE(IDB_TheButtonWhenClickedDown),IMAGE_BITMAP,90,49,0
SendMessage GetDlgItem((HWND)dwRefData,
IDC_TheButton),STM_SETIMAGE,IMAGE_BITMAP,ByVal
(hBit
case WM_LBUTTONUP
,hBit=LoadImage(0
(MAKEINTRESOURCE(IDB_TheButtonWhenMouseIsOVer),IMAGE_BITMAP,90,49,0)
SendMessage
,GetDlgItem((HWND)dwRefData,IDC_TheButton),STM_SETIMAGE,IMAGE_BITMAP,
(ByVal hBit
TheButtonToggle = false
ButtonSubclass=True
' Other cases...
End Select
,ButtonSubclass=DefSubclassProc(hWnd, uMsg
(wParam, lParam
Dim g_fMouseInClient As Boolean
MOUSEMOVE
if Not g_fMouseInClient Then
( g_fMouseInClient=TRUE
MessageBeep(0
Dim tme As TRACKMOUSEEVENT
(tme.cbSize=Leb(tme
tme.dwFlags=TME_LEAVE
tme.hwndTrack=hwnd
TrackMouseEvent tme
case WM_MOUSELEAVE
g_fMouseInClient=FALSE
return 0
(HANDLE_MSG(hwnd,WM_MOUSEMOVE,OnMouseMove;