DC就是DeviceContent 直译就是设备上下文
就是一个可以在应用内画图的部分
也就是绘图层
是一个句柄
要做的第一个自然是得到这个句柄
这个操作放在处理单个消息时操作
处理单个消息时,获取和释放句柄要成对出现
目前定义句柄的类型名为HDC
获取HDC的方法如下
一、
BeginPaint
EndPaint
HDC BeginPaint(
In HWND hwnd,//窗口句柄
out LPPAINTSTRUCT lpPaint
);
LPPAINTSTRUCT如下:
typedef struct tagPAINTSTRUCT{
HDC hdc;//设备上下文句柄
BOOL fErase;//是否擦除背景
RECT rcPaint;//确定绘制的矩形范围
BOOL fRestore;//MSDN说暂时保留让我们不用管
BOOL fIncUpdate;//MSDN说暂时保留让我们不用管
BYTE rgbReserved[32];//MSDN说暂时保留让我们不用管
}PAINTSTRUCT,*PPAINTSTRUCT;
BOOL EndPaint
(
In HWND hwnd,
In const PAINTSTRUCT *lpPaint
);
应用示例如下:
switch (message)
{
HDC g_hdc;
PAINTSTRUCT paintStruct;
case WM_PAINT:
g_hdc = BeginPaint(hWnd, &paintStruct);
Game_Paint();
EndPaint(hWnd, &paintStruct);
ValidateRect(hWnd, NULL);
break;
运行后发现paintStruct一开始时初始化状态,里面的数据都是初始化值,fErase是一长串数字
经过BeginPaint后,BeginPaint设置了paintStruct各数值,并得到了struct里的hdc
对于ValidateRect
指的是可以指定某一块区域内进行绘制
BOOL ValidateRect(In HWND hWnd,In const RECT *lpRect);
lpRect如果设置为NULL,就表示更新整个窗口的画面
二、
GetDC
ReleaseDC
HDC GetDC(In HWND hWnd);
int ReleaseDC(In HWND hWnd,In HDC hDC);
这些参数不需要解释了
与上面那对不同的是,这个可以放在退出部分来释放