Isn't this just the way Win32 programs were written? Each window could have a routine that received messages like WM_PAINT, WM_SIZE, etc.
Further, with Win32, you can choose between an async or synchronous message send, depending on whether you are interested in side effects or not.