#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Global $assot[19][2] = [ _
[1, '1 - Клиентская область'], _
[2, '2 - Заголовок'], _
[3, '3 - Иконка'], _
[5, '5 - Меню'], _
[6, '6 - Горизонтальная прокрутка'], _
[7, '7 - Вертикальная прокрутка'], _
[8, '8 - Свернуть'], _
[9, '9 - Развернуть'], _
[10, '10 - Левый грань'], _
[11, '11 - Правая грань'], _
[12, '12 - Верхняя грань'], _
[13, '13 - Левый верхний угол'], _
[14, '14 - Правый верхний угол'], _
[15, '15 - Нижняя грань'], _
[16, '16 - Левый нижний угол'], _
[17, '17 - Правый нижний угол'], _
[18, '18 - Рамка'], _ ; если стиль без возможности изменения размера окна (-1)
[20, '20 - Закрыть'], _
[21, '21 - Знак вопроса']]

Global $k = 0, $Byfer
$hGui = GUICreate("WM_SETCURSOR", 510, 140, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_HSCROLL, $WS_VSCROLL), $WS_EX_TOPMOST)
GUICtrlCreateLabel('Функция WM_SETCURSOR выполняется при скольжении курсора мыши в окне.', 5, 3, 400, 17)
$Button = GUICtrlCreateButton('Button', 10, 25, 70, 25)
$StatusBar = GUICtrlCreateLabel('', 5, 55, 270, 74)
GUISetState()

GUIRegisterMsg($WM_SETCURSOR, "WM_SETCURSOR")

Do
Until GUIGetMsg() = -3

Func WM_SETCURSOR($hWnd, $Msg, $wParam, $lParam)
	$k += 1
	$Hittest = BitAND($lParam, 0xFFFF) ; _WinAPI_LoWord
	$MouseMsg = BitShift($lParam, 16) ; _WinAPI_HiWord
	WinSetTitle($hGui, '', 'Вызов ' & $k)

	$info_ID = '?'
	For $i = 0 To 18
		If $Hittest = $assot[$i][0] Then
			$info_ID = $assot[$i][1]
			ExitLoop
		EndIf
	Next
	$Tmp = $info_ID & @LF & 'hWnd= ' & $wParam & @LF & 'ID= ' & _WinAPI_GetDlgCtrlID($wParam) & @CRLF & ' MouseMsg = ' & $MouseMsg
	If $Tmp <> $Byfer Then
		GUICtrlSetData($StatusBar, $Tmp)
		$Byfer = $Tmp
	EndIf
	Return $GUI_RUNDEFMSG
EndFunc