typedef STRUCT TAG_PAINTSTRUCT{
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[32];
}PAINTSTRUCT;
第一种方法:BeginPaint(HWND hWnd, PAINTSTRUCT* ps),EndPaint(HWND hWnd, PAINTSTRUCT* ps)
DefWindowProc()
{
BeginPaint(hwnd, &ps); //ps中的rcPaint由windows系统计算后得到包含InvalidRect的最小Rectangle
//do nothing
EndPaint(hwnd, &ps);
}
第二种方法:GetDC(HWND hwnd), ReleaseDC(HWND hwnd, HDC hdc)
GetDC得到的是对应HWND窗口的ClientArea的Clipping Rectangle,该Rectangle包含整个客户区
//说明 GetWIndowDC(HWND hwnd)可以得到整个窗口的Rectangle包含客户区,标题栏等等。
//而且可能自己处理WM_NCPAINT消息,NC=NOT CLIENT AREA
本文详细介绍了Windows绘图API中的两种关键方法:使用BeginPaint与EndPaint进行绘图区域的初始化与清理,以及通过GetDC与ReleaseDC直接获取与释放设备上下文。这两种方法分别适用于不同的绘图场景,并对比了它们之间的差异。
739

被折叠的 条评论
为什么被折叠?



