Poprawiłem, jak napisałem, żrby sprawdzało czy kursor jest na przycisku i w oknie rodzica, to błedu nie wykazuje:
case WM_MOUSEMOVE:
lData = GetWindowLong (hWnd, GWL_USERDATA);
GetCursorPos (& ptCursor);
GetWindowRect (hWnd, & rectClient);
if (GetCapture () != hWnd)
SetCapture (hWnd);
RECT rectParent;
GetWindowRect (GetParent (hWnd), & rectParent);
if (PtInRect (& rectParent, ptCursor) && PtInRect (& rectClient, ptCursor))
{
if (HIWORD (lData) == false)
{
GetClientRect (hWnd, & rectClient);
InvalidateRect (hWnd, & rectClient, true);
}
SetWindowLong (hWnd, GWL_USERDATA, MAKELONG (LOWORD (lData), true));
}
else
{
SetWindowLong (hWnd, GWL_USERDATA, MAKELONG (LOWORD (lData), false));
if (GetCapture () == hWnd) //&& LOWORD (lData) == false)
ReleaseCapture ();
GetClientRect (hWnd, & rectClient);
InvalidateRect (hWnd, & rectClient, true);
}
break;