GetDC和BeginPaint
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相关推荐
- BeginPaint和GetDC有什么区别?【转】
转自:http://hi.baidu.com/d_b_mike/blog/item/ec8820d0fb9127d5572c84a9.html 这是个windows编程问题. 第一种情况显示出来的字很 ...
- VC绘制位图--BeginPaint()与GetDC()的区别
//======================================================================== //TITLE: // EVC绘制位图--B ...
- BeginPaint和GetDC有什么区别
windows编程问题 第一种情况显示出来的字很正常. case WM_PAINT: gdc = BeginPaint (hwnd, &ps); TextOut (gdc, 0, 0, s, ...
- Win32中BeginPaint和GetDC的使用
这是正确的方式,重要的事情说三遍 WM_PAINT: {...hdc = BeginPaint(hWnd, &ps);//hdc = GetDC(hWnd); ... } 1.单独使用GetD ...
- 创建Windows类别
Windows在表单.控制.对话框基本上形成.Windows类是Windows形式的类型,可处理叙述性说明. 在Windows提前有很多定义Windows类别,但它可以很容易地创建自己的Windows ...
- 可视化GDI操作题目
1.GDI是什么的英文缩写? Graphics Device Interface 2.什么是设备的无关性? 操作系统屏蔽了硬件设备的差异 3.GDI的主要任务是什么?起到什么样的作用? 主要任务:负责 ...
- 第05章 图形基础
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形.正如您所认为的那样,GDI是Windows非常重要的部分.不只 ...
- 第五章 图像基础(设备内容)
设备内容 在开始绘图之前,让我们比第四章更精确地讨论一下设备内容. 当您想在一个图形输出设备(诸如屏幕或者打印机)上绘图时,您首先必须获得一个设备内容(或者DC)的句柄.将句柄传回给程序时,Windo ...
- 第五章--设备内容(The Device Context)(2)
设备的大小 假定要绘制边长为1英寸的正方形,您(程序写作者)或Windows(操作系统)需要知道视讯显示上1英寸对应多少图素.使用GetDeviceCaps函数能取得有关如视讯显示器和打印机之类输出设 ...
最新文章
- asp.net mvc4开启SqlServer 会话共享模式
- python算法的基本原理_kNN算法基本原理与Python代码实践
- 【javascript动画系列之网页白板】javascript实现的白板(兼容ff,ie,chrome,……)
- oracle bookauthor,Oracle 聚簇(征集)
- 1603. 设计停车系统
- 如何使用IVT BlueSoleil 如何在电脑上使用蓝牙耳机
- img标签显示不出图片_前端开发,原生 JS 实现最简单的图片懒加载
- 机器视觉培训-苏州机器视觉公司,课程安排历时7天
- 华为招聘状态码RSA解密方法
- UML用例图中三种关系详解
- gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
- raster包—resample函数
- 关于ie中使用a标签无法打开(预览)pdf问题
- php操作pdf文档输出,PHP生成PDF文档实用技巧
- SABER 最强大的数模混合信号仿真软件
- 单因子——数据Wind
- 计算机编程语言的应用
- 最短路问题(超详细~~)
- 教育直播的受众人群分析
- 基于贪心算法的马踏棋盘哈密顿回路问题