GetDC和BeginPaint
来源:互联网 发布:管家婆是什么软件 编辑:程序博客网 时间:2024/05/16 10:59
BeginPaint
通常使用的方式:获取--->操作----->结束
case WM_PAINT:// Draw some text centered in the client area of the main windowhDC = BeginPaint(hWindow, &ps);GetClientRect(hWindow, &rect);DrawText(hDC, TEXT("This is a skeleton application!"), -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint(hWindow, &ps);return 0;
GetDC
通常使用的方式:获取--->操作----->释放
case WM_PAINT:// Draw some text centered in the client area of the main windowhDC=GetDC(hWindow);TextOut(hDC,0,0,"This is a skeleton application!",strlen("This is a skeleton application!"));ReleaseDC(hWindow,hDC);return 0;
差别
两者有什么差别呢?打开windows任务管理器,查看cpu使用率,两者最直观的差别立刻呈现眼前,也就是说在在画图时,使用GetDC十分的浪费资源,原因在于:
BeginPaint() 和EndPaint() 可以删除消息队列中的WM_PAINT消息,并使无效区域有效。
GetDC()和ReleaseDC()并不删除也不能使无效区域有效,因此当程序跳出 WM_PAINT 时 ,无效区域仍然存在。系统就回不断发送WM_PAINT消息,于是程序不断处理WM_PAINT消息。
BeginPaint、EndPaint会告诉GDI内部,这个窗口需要重画的地方已经重画了,这样WM_PAINT处理完返回给系统后,系统不会再重发WM_PAINT,
GetDC没有告诉系统这个窗口需要重画的地方已经画过,在你把程序返回给系统后,系统一直以为通知你的重画命令你还没有乖乖的执行或者执行出错,所以在消息空闲时,它还会不断地发WM_PAINT催促你画,导致程序卡死。
- BeginPaint和GetDC
- GetDC和BeginPaint
- BeginPaint和GetDC区别
- BeginPaint和GetDC
- BeginPaint 和 GetDC 的区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC之区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC之区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC的区别
- BeginPaint和GetDC的区别
- BeginPaint 和GetDC的区别
- BeginPaint和GetDC的区别
- BeginPaint&&GetDc
- c语言 vector使用样例
- (10)call与Ret 去电与回电
- android MMS源码分析
- 用select case实现用户分级别登录
- 【1.5+1.6】系统漫游——高速缓存和金字塔型存储设备
- GetDC和BeginPaint
- android viewstub
- ajaxfileupload+strtus2实现在无刷新上传(解决json无法解析问题)
- requestAnimationFrame
- SendInput 备份一
- linux下TCP/IP网络编程
- Ubuntu 配置 opencv , CodeBlocks 开发环境
- NSString & NSMutableString
- 真正的程序员