1.获取设备描述表句柄:
a. hdc = BeginPaint(hwnd,&ps);
//other program lines
EndPaint(hwnd,&ps);
BeginPaint调用使整个客户区有效(阻止WM_PAINT消息一直发送),填充
ps结构的字段,返回的设备描述句柄。使用这个句柄只能在ps结构中的rcPaint字段规定的区域
内绘图。EndPaint调用可释放设备描述句柄。这两个函数常成对出现,并且一般只用在WM_PAINT
消息中。
b. hdc = GetDC(hwnd);
//other progream lines
ReleaseDC(hwnd,hdc);
GetDC函数调用后会返回hwnd参数所指定的窗口的客户区所对应的设备描述表句柄。可见GetDC调用
与BeginPaint的基本区别是,利用从GetDC返回的句柄可以在整个客户区上绘图。如果hwnd参数设置
为NULL,那么函数会返回整个桌面的设备描述表句柄。当不再需要该设备环境时,需要调用ReleaseDC
函数释放设备描述表。
c. hdc = GetWindowDC(hwnd);
//other progream lines
DeleteDC(hdc);
GetWindowDC返回可以在整个窗口(包括客户区部分和标题栏、菜单、滚动条、框架等非客户区部分)
绘图的设备描述表句柄,不过此函数很少使用。
d. hdc = CreateDC(lpszDriver,lpszDevice,lpszOutput,lpData);
//other progream lines
DeleteDC(hdc);
BeginPaint、GetDC和GetWindowDC获得的设备内容都与显示器上的某个特定窗口(即hwnd)相关。
CreateDC是取得设备描述表句柄一个更通用的函数,它甚至可以获取非显示器输出设备描述表句柄。
当不再需要该设备描述表时只可调用DeleteDC函数删除它。
2.保存设备描述表:
int idSaved = SaveDC(hdc) ;//保存
RestoreDC (hdc, idSaved) ;//恢复
RestoreDC(hdc,-1);//表示恢复最近保存的一次