The WM_SETCURSOR message is sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
WM_SETCURSOR
hwnd = (HWND) wParam; // handle to window with cursor
nHittest = LOWORD(lParam); // hit-test code
wMouseMsg = HIWORD(lParam); // mouse-message identifier
The DefWindowProc function passes the WM_SETCURSOR message to a parent window before processing. If the parent window returns TRUE, further processing is halted. Passing the message to a window's parent window gives the parent window control over the cursor's setting in a child window. The DefWindowProc function also uses this message to set the cursor to an arrow if it is not in the client area, or to the registered class cursor if it is in the client area. If the low-order word of the lParam parameter is HTERROR and the high-order word of lParam specifies that one of the mouse buttons is pressed, DefWindowProc calls the MessageBeep function.
The high-order word of lParam is zero when the window enters menu mode.
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winuser.h.
Cursors Overview, Cursor Messages, DefWindowProc, MessageBeep