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消息里面输入如下代码:

[cpp] view plaincopy
  1. HDC hdc = GetDC(hWnd);
  2. Ellipse(ps.hdc, 10, 10, 20, 20);
  3. ReleaseDC(hWnd, hdc);

运行程序可以清楚的看到,圆在不停的闪烁,

如果替换成BeginPaint 则不会闪烁

原因是: GetDC不会把无效区域变为有效区域,所以不停的发送消息自绘,从而导致闪烁,BeginPaint 反之

转自:http://blog.csdn.net/acdnjjjdjkdckjj/article/details/5967532

BeginPaint EndPaint 与GetDC ReleaseDC的区别相关推荐

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

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

  2. BeginPaint和GetDC有什么区别

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

  3. GetDC() ReleaseDC()引起的内存泄漏

    BUG: GetDC() ReleaseDC()引起的内存泄漏 今天同事在一个定时器中画图,结果发现内存缓慢增长,怀疑是内存泄漏,查了很久,该释放的GDI资源都释放了的啊,可是还是无法解决,最后把Ge ...

  4. 关于HDC GetDC ReleaseDC

    HDC hdc;定义一个设备上下文的句柄,在API中用 如API中响应WM_PAINT时,要在窗口中显示文字: RECT rc: GetClientRect(hWnd,&rc);//获取客户区 ...

  5. GetDC(),ReleaseDC()

    用GetDC()得到的DC, 必须调用ReleaseDC() 用CreateDC()创建的DC, 必须调用DeleteDC() 两者是不能混淆的. 一种典型的错误代码如下: CDC* pDC = Ge ...

  6. DeleteDC 与 ReleaseDC的区别

    DeleteDC 与 CreateDC 对应 ReleaseDC 与 GetDC 对应 借过来的(GetDC),就要放还回去(ReleaseDC) 自已创建的(CreateDC),要自已删除(Dele ...

  7. DeleteDC() 与 ReleaseDC() 的区别 [转]

    DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值:失败,返回零.调 ...

  8. DeleteDC与ReleaseDC的区别

    1.CreateCompatibleDC后用DeleteDC 2.GetDC后用ReleaseDC

  9. DeleteDC() 与 ReleaseDC() 的区别

    点击打开原文链接 DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值 ...

最新文章

  1. 使用Python,OpenCV在视频中进行实时条形码检测
  2. 表单input中disabled提交后得不到值的解决办法
  3. Eclipse设置文字大小
  4. 中if判断中文_当Excel表格中的条件判断超过8个,用IF函数不容易实现怎么办?...
  5. 团队项目第一篇——NABCD
  6. react和vue配置本地代理
  7. P3426-[POI2005]SZA-Template【KMP】
  8. 如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?
  9. 使用js、jquery完成省市二级联动
  10. 数据结构学习篇(一)---大纲、简介、作用
  11. java中this什么时候不能省略?this()的用法
  12. Bus Hound数据分析
  13. 喜马拉雅算法解析 (两种算法)
  14. layui后台添加数据给php,layui怎么实现数据绑定
  15. 联想2022拯救者Y9000P和Y7000P选哪个好
  16. 今日小游戏:消除棋子
  17. 一个-书,字 我惆怅
  18. Linux操作系统PS命令详细 解析
  19. python123判断ip地址合法性_判断IP地址的合法性
  20. Linux:TTY串口接收中断

热门文章

  1. 背包问题动态规划matlab,01背包问题动态规划详解
  2. Android SDK开发艺术探索(五)安全与校验
  3. 第48讲:Python中函数的概念以及应用案例
  4. linux之《vim编辑器》
  5. String 字符分割
  6. 实现微信绑定用户功能
  7. 2012服务器系统有什么版本的,Win server 2012 哪个版本更合适
  8. python定义向量内积函数_python – 沿多维数组的一维向量点积
  9. 前端面试真题系列(一)-李游Leo-专题视频课程
  10. C语言——数组初始化