在其窗口的客户端区域中执行大量绘图操作的应用程序必须使用私有显示设备上下文。要创建此类设备上下文,应用程序必须在注册窗口类时为WNDCLASS结构的样式成员指定CS_OWNDC常量。注册窗口类后,应用程序通过调用GetDC函数获取标识私有显示设备上下文的句柄。
以下示例显示如何创建私有显示设备上下文。
#include < windows.h > / *所有Windows应用程序* / *
#include < stdio.h >
#include < string.h > / * strtok * /
#include“dc.h”/ *特定于此程序* /
/ *功能原型* /
BOOL InitApplication(HINSTANCE);
long FAR PASCAL MainWndProc(HWND, UINT, UINT, LONG);
/ *全局变量* /
HINSTANCE hinst; /* handle of current instance */
HDC hdc; /* display device context handle */
.
.
.
BOOL InitApplication(HINSTANCE hinstance)
{
WNDCLASS wc;
/*
*使用参数填写窗口类结构
*描述主窗口。
*/
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";
/ *注册窗口类并返回
*结果代码。
*/
return RegisterClass(&wc);
}
LRESULT APIENTRY MainWndProc(
HWND hwnd,/ *窗口句柄* /
UINT消息,/ *消息类型* /
WPARAM wParam,/ *附加信息* /
LPARAM lParam)/ *附加信息* /
{
PAINTSTRUCT ps; /* paint structure */
/ *检索标识私有DC的句柄。*/
hdc = GetDC(hwnd);
switch(message){
case WM_PAINT:
BeginPaint(hwnd, &ps);
.
./ *使用私人DC绘制和绘画。*/
.