DC

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);
这些参数不需要解释了

与上面那对不同的是,这个可以放在退出部分来释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值