It's like this: When a program sends a message to it's own window this is a totally valid operation. Next time the dispatcher checks in the messge loop if there are messages to process, the WindowsProc is called with the corresponding parameters. Recursion that will make your program stop working will only happen if the same message that was received would be resent to its own window. You'll have to be very wary of what you are doing as the recursion might take more than one step:
Received Message | Sent Message
-------------------------------
A | B
B | C
C | A
You can easily spot the loop occuring when any message A, B or C was sent to the windows WndProc.
Best Regards,
—MRB