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催促你画,导致程序卡死。

GetDC和BeginPaint相关推荐

  1. BeginPaint和GetDC有什么区别?【转】

    转自:http://hi.baidu.com/d_b_mike/blog/item/ec8820d0fb9127d5572c84a9.html 这是个windows编程问题. 第一种情况显示出来的字很 ...

  2. VC绘制位图--BeginPaint()与GetDC()的区别

    //======================================================================== //TITLE: //    EVC绘制位图--B ...

  3. BeginPaint和GetDC有什么区别

    windows编程问题 第一种情况显示出来的字很正常. case WM_PAINT: gdc = BeginPaint (hwnd, &ps); TextOut (gdc, 0, 0, s, ...

  4. Win32中BeginPaint和GetDC的使用

    这是正确的方式,重要的事情说三遍 WM_PAINT: {...hdc = BeginPaint(hWnd, &ps);//hdc = GetDC(hWnd); ... } 1.单独使用GetD ...

  5. 创建Windows类别

    Windows在表单.控制.对话框基本上形成.Windows类是Windows形式的类型,可处理叙述性说明. 在Windows提前有很多定义Windows类别,但它可以很容易地创建自己的Windows ...

  6. 可视化GDI操作题目

    1.GDI是什么的英文缩写? Graphics Device Interface 2.什么是设备的无关性? 操作系统屏蔽了硬件设备的差异 3.GDI的主要任务是什么?起到什么样的作用? 主要任务:负责 ...

  7. 第05章 图形基础

    图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形.正如您所认为的那样,GDI是Windows非常重要的部分.不只 ...

  8. 第五章 图像基础(设备内容)

    设备内容 在开始绘图之前,让我们比第四章更精确地讨论一下设备内容. 当您想在一个图形输出设备(诸如屏幕或者打印机)上绘图时,您首先必须获得一个设备内容(或者DC)的句柄.将句柄传回给程序时,Windo ...

  9. 第五章--设备内容(The Device Context)(2)

    设备的大小 假定要绘制边长为1英寸的正方形,您(程序写作者)或Windows(操作系统)需要知道视讯显示上1英寸对应多少图素.使用GetDeviceCaps函数能取得有关如视讯显示器和打印机之类输出设 ...

最新文章

  1. asp.net mvc4开启SqlServer 会话共享模式
  2. python算法的基本原理_kNN算法基本原理与Python代码实践
  3. 【javascript动画系列之网页白板】javascript实现的白板(兼容ff,ie,chrome,……)
  4. oracle bookauthor,Oracle 聚簇(征集)
  5. 1603. 设计停车系统
  6. 如何使用IVT BlueSoleil 如何在电脑上使用蓝牙耳机
  7. img标签显示不出图片_前端开发,原生 JS 实现最简单的图片懒加载
  8. 机器视觉培训-苏州机器视觉公司,课程安排历时7天
  9. 华为招聘状态码RSA解密方法
  10. UML用例图中三种关系详解
  11. gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
  12. raster包—resample函数
  13. 关于ie中使用a标签无法打开(预览)pdf问题
  14. php操作pdf文档输出,PHP生成PDF文档实用技巧
  15. SABER 最强大的数模混合信号仿真软件
  16. 单因子——数据Wind
  17. 计算机编程语言的应用
  18. 最短路问题(超详细~~)
  19. 教育直播的受众人群分析
  20. 基于贪心算法的马踏棋盘哈密顿回路问题

热门文章

  1. TI毫米波雷达开发常见问题总结
  2. 智安网络丨浅谈信息系统终止时如何确保信息资产的安全
  3. 算法题:1到4位编码推下标
  4. 越狱Season 1-Episode 1: the pilot
  5. jQuery即点即改
  6. SQL数据库修复教程-浪潮GS7.0中了后缀是.5ss5c勒索病毒修复过程
  7. 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
  8. 咪蒙微信公众号已被注销 酷玩实验室因不实报道道歉
  9. php文字验证码插件,php中文验证码实现方法
  10. Word 2003 长篇文档排版技巧(二)