Input messages come in two formats, depending on how your application receives them:
Messages that Windows places in the application queue take the form of an MSG structure. This structure contains members that identify and contain information about the message. Your application's message loop retrieves this structure from the application queue and dispatches it to the appropriate window procedure.
Messages that Windows sends directly to a window procedure take the form of four arguments. The arguments correspond to the four window-procedure parameters: hWnd, message, wParam, and lParam.
The only difference between these two message forms is that the MSG structure contains two additional pieces of information: the current location of the cursor and the current system time. Windows does not pass this information to the window procedure.