BeginPaint EndPaint 与GetDC ReleaseDC的区别
1.
绘图一般在WM_PAINT消息里面绘图, 一般用BeginPaint( HWND hwnd, LPPAINTSTRUCT lpPaint) 与BOOL EndPaint(
HWND hWnd, CONST PAINTSTRUCT *lpPaint)
<1> BeginPaint自动设置裁剪区域,把不更新的区域设置到更新区域外面,
此消息只绘制无效区域,更新区域可以显示地被InvalidateRect 和InvalidateRgn设置,如果背景要擦除,BeginPaint发送消息 WM_ERASEBKGND 给窗口
<2>BeginPaint 会自动地把无效区域设置为有效区域, BeginPaint 和EndPaint 只能在WM_PAINT消息里面进行调用 ,两者一定要成对出现
2. GetDC与ReleaseDC
<1> GetDC 可以用在任何需要DC的地方, 他不会使得无效区域变得有效
3.解释了那么多,拿个程序来说明问题:
比如说要在一个客户区域画个圆 ,如果在WM_PAINT消息里面输入如下代码:
- HDC hdc = GetDC(hWnd);
- Ellipse(ps.hdc, 10, 10, 20, 20);
- ReleaseDC(hWnd, hdc);
运行程序可以清楚的看到,圆在不停的闪烁,
如果替换成BeginPaint 则不会闪烁
原因是: GetDC不会把无效区域变为有效区域,所以不停的发送消息自绘,从而导致闪烁,BeginPaint 反之
转自:http://blog.csdn.net/acdnjjjdjkdckjj/article/details/5967532
BeginPaint EndPaint 与GetDC ReleaseDC的区别相关推荐
- BeginPaint和GetDC有什么区别?【转】
转自:http://hi.baidu.com/d_b_mike/blog/item/ec8820d0fb9127d5572c84a9.html 这是个windows编程问题. 第一种情况显示出来的字很 ...
- BeginPaint和GetDC有什么区别
windows编程问题 第一种情况显示出来的字很正常. case WM_PAINT: gdc = BeginPaint (hwnd, &ps); TextOut (gdc, 0, 0, s, ...
- GetDC() ReleaseDC()引起的内存泄漏
BUG: GetDC() ReleaseDC()引起的内存泄漏 今天同事在一个定时器中画图,结果发现内存缓慢增长,怀疑是内存泄漏,查了很久,该释放的GDI资源都释放了的啊,可是还是无法解决,最后把Ge ...
- 关于HDC GetDC ReleaseDC
HDC hdc;定义一个设备上下文的句柄,在API中用 如API中响应WM_PAINT时,要在窗口中显示文字: RECT rc: GetClientRect(hWnd,&rc);//获取客户区 ...
- GetDC(),ReleaseDC()
用GetDC()得到的DC, 必须调用ReleaseDC() 用CreateDC()创建的DC, 必须调用DeleteDC() 两者是不能混淆的. 一种典型的错误代码如下: CDC* pDC = Ge ...
- DeleteDC 与 ReleaseDC的区别
DeleteDC 与 CreateDC 对应 ReleaseDC 与 GetDC 对应 借过来的(GetDC),就要放还回去(ReleaseDC) 自已创建的(CreateDC),要自已删除(Dele ...
- DeleteDC() 与 ReleaseDC() 的区别 [转]
DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值:失败,返回零.调 ...
- DeleteDC与ReleaseDC的区别
1.CreateCompatibleDC后用DeleteDC 2.GetDC后用ReleaseDC
- DeleteDC() 与 ReleaseDC() 的区别
点击打开原文链接 DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值 ...
最新文章
- 使用Python,OpenCV在视频中进行实时条形码检测
- 表单input中disabled提交后得不到值的解决办法
- Eclipse设置文字大小
- 中if判断中文_当Excel表格中的条件判断超过8个,用IF函数不容易实现怎么办?...
- 团队项目第一篇——NABCD
- react和vue配置本地代理
- P3426-[POI2005]SZA-Template【KMP】
- 如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?
- 使用js、jquery完成省市二级联动
- 数据结构学习篇(一)---大纲、简介、作用
- java中this什么时候不能省略?this()的用法
- Bus Hound数据分析
- 喜马拉雅算法解析 (两种算法)
- layui后台添加数据给php,layui怎么实现数据绑定
- 联想2022拯救者Y9000P和Y7000P选哪个好
- 今日小游戏:消除棋子
- 一个-书,字 我惆怅
- Linux操作系统PS命令详细 解析
- python123判断ip地址合法性_判断IP地址的合法性
- Linux:TTY串口接收中断