BASICS OF DRAWING IN A WINDOW

When you draw in the client area of a window, you must obey the rules. You must redraw the client area whenever a WM_PAINT message is sent to your application. This is because there are many external events that require that your application window is redrawn — the user resizing the window for example or moving another window to expose part of your window that was hidden. Windows sends information along with the WM_PAINT message that enables you to determine which part of the client area needs to be re-created. This means that you don’t have to draw all the client area in response to a WM_PAINT message, just the area identified as the update region. In an MFC application, the MFC intercepts the WM_PAINT message and redirects it to a function in one of your classes. I’ll explain how you handle this message later in this chapter.

The Window Client Area

A window doesn’t have a fixed position on-screen, or even a fixed visible area, because the user can drag a window around and resize it by dragging its borders. How, then, do you know where to draw on-screen?

Fortunately, you don’t. Windows provides you with a consistent way of drawing in a window that is independent of where it is on-screen; without this, drawing in a window would be inordinately complicated. Windows does this by maintaining a coordinate system for the client area of a window that is local to the window. It always uses the upper-left corner of the client area as its reference point. All ...

Get Ivor Horton's Beginning Visual C++ 2012 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.