The code you presented here is wrong. First off, you need to read a little more of the documentation. Here is a useful link: Painting and Drawing. Basically there are two ways to update a window:
- In response to the
WM_PAINTmessage. Use theBeginPaintandEndPaintfunctions to paint the client area properly. This message is sent by the system when a part of the client area is “invalidated” (as a result of resizing, restoring from minimized state, moving a window previously obscured, or programmatically invalidating it.)WM_PAINTis a low-priority message, received just before the message-queue gets empty. - Specifically drawing a part or the whole client area without having an invalidated region on it. Use
GetDCandReleaseDCfor this. Useful if you want to make changes immediately visible, when the application (CPU) is busy.
Writing some code to process the WM_PAINT message is normally almost mandatory, while specifically drawing as well is optional, depending on the requirements of your application.
Never send or post a WM_PAINT message yourself, instead invalidate a part or the client area – the application will receive a WM_PAINT message before becoming idle. If you want the painting to occur immediately call UpdateWindow – this bypasses the message queue.
solved Why should I call `GetDC` and `ReleaseDC` again and again?