An application performing numerous drawing operations in the client area of its window must use a private display device context. To create this type of device context, the application must specify the CS_OWNDC constant for the style member of the WNDCLASS structure when registering the window class. After registering the window class, the application obtains a handle identifying a private display device context by calling the GetDC function.
The following example shows how to create a private display device context.
#include <windows.h> // required for all Win32-based applications
#include <stdio.h> // C run-time header for i/o
#include <string.h> // C run-time header for strtok
#include "dc.h" // specific to this program
// Function prototypes.
BOOL InitApplication(HINSTANCE);
long FAR PASCAL MainWndProc(HWND, UINT, UINT, LONG);
// Global variables
HINSTANCE hinst; // handle of current instance
HDC hdc; // display device context handle
BOOL InitApplication(HINSTANCE hinstance)
{
WNDCLASS wc;
// Fill in the window class structure with parameters
// describing the main window.
wc.style = CS_OWNDC; // Private-DC constant
wc.lpfnWndProc = (WNDPROC) MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = LoadIcon((HINSTANCE) NULL,
MAKEINTRESOURCE(IDI_APPLICATION));
wc.hCursor = LoadCursor((HINSTANCE) NULL,
MAKEINTRESOURCE(IDC_ARROW));
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = "GenericMenu";
wc.lpszClassName = "GenericWClass";
// Register the window class and return the resulting code.
return RegisterClass(&wc);
}
LRESULT APIENTRY MainWndProc(
HWND hwnd, // window handle
UINT message, // type of message
WPARAM wParam, // additional information
LPARAM lParam) // additional information
{
PAINTSTRUCT ps; // paint structure
// Retrieve a handle identifying the private DC.
hdc = GetDC(hwnd);
switch (message)
{
case WM_PAINT:
BeginPaint(hwnd, &ps);
// Draw and paint using private DC.