BeginPaint()- EndPaint() and GetDC() - ReleaseDC() are functions used in pair. BeginPaint() starts painting for a window and EndPaint() ends the task. BeginPaint()- EndPaint() mainly used in WP_PAINT message handling. GetDC() - ReleaseDC() pair also used for start and end drawing for a device context. This pair function is used for drawing on device context. Function reference has been included in the next paragraph.

BeginPaint: The BeginPaint function prepares the specified window for painting and fills a PAINTSTRUCT structure with information about the painting.

HDC BeginPaint(
  HWND hwnd,  // handle to window
  LPPAINTSTRUCT lpPaint
              // pointer to structure for paint information
);
 

EndPaint: The EndPaint function marks the end of painting in the specified window. This function is required for each call to the BeginPaint function, but only after painting is complete.

BOOL EndPaint(
  HWND hWnd,  // handle to window
  CONST PAINTSTRUCT *lpPaint 
              // pointer to structure for paint data
);
 

GetDC: The GetDC function retrieves a handle to a display device context for the client area of a specified window or for the entire screen. You can use the returned handle in subsequent GDI functions to draw in the device context. The GetDCEx function is an extension to GetDC, which gives an application more control over how and whether clipping occurs in the client area.

HDC GetDC(
  HWND hWnd   // handle to a window
);
 

ReleaseDC: The ReleaseDC function releases a device context (DC), freeing it for use by other applications. The effect of the ReleaseDC function depends on the type of device context. It frees only common and window device contexts. It has no effect on class or private device contexts.

int ReleaseDC(
  HWND hWnd,  // handle to window
  HDC hDC     // handle to device context
);
 

About our authors: Team EQA

Further readings

Where is WinMain() function in MFC application ?

MFC hides WinMain in its framework and includes source file on WinMain(). This explains how framework calls global CWinApp::Initinstance() from entry WinMain.

What is the utility of CWinApp class?

This is constructed during global C++ objects are constructed and is already available when Windows calls the WinMain function, which is supplied by the ...

Basic steps in Win32 GUI Application with source code.

Define a custom Window class structure, Register the class name, CreateWindow, Show windows and write message get and dispatch loop statements. Define the Window CallBack procedure and write the handlers.

What is a Window CallBack procedure and what is its utility?

DispatchMessage() is a API which indirectly triggers the Window CallBack procedure. Message structure members from this function are passed to the CallBack procedure. CallBack procedure should implement event handlers depending on the need of the application.

What are LPARAM and WPARAM in window proc function?

LPARAM and WPARAM are the two parameters in Window CallBack procedure. They signifies parameters of various events. They are used in handing individual events.

What are the basic steps of a typical MFC based application?

We need to write WinMain and need to follow all these in a Win32 application. However we need not to write much if we are writing an application with MFC ...

#