>>1 - i always use the InvalidateRect(), but why the UpdateWindow()?

UpdateWindow() sends the paint msg directly to the apps callback. It speeds up the paint msg delivery. If you don't use UpdateWindow() the paint msg is sent to the OS msg queue, where it has the lowest priority and can be ignored.

>>2 - why you used the drawState? seems to be, always, false

It was an example to show when you generate a paint msg.
I assumed you would understand that it was not full code and would ahve to have parts filled in to make it work (ie flip the status in the DrawScreen() function)