The
WM_MOUSEMOVE
message is generated by the mouse driver every time
GetMessage
is called (typically: at every turn of the message loop) if the mouse coordinates and state are found different.
In your case, most probably, the "quick motion" makes the mouse to fall outside the widget surface in a time less than a loop (so the message goes to another window).
If you want to track mouse movement into a window you should "capture" the mouse to retain all activity in that window (even if the mouse lays outside), until you can safely decide that mouse input isn't anymore pertinent to it.
See
SetCapture [
^]/
ReleaseCapture[
^].