文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > IT/计算机 > Invalidate与UpdateWindow区别
侵权投诉

Invalidate与UpdateWindow区别

Invalidate与UpdateWindow区别

Invalidate 让客户区处于可以重画的状态,而 UpdateWindow 开始重画,但是它先判断客户 区是否为空,不空 UpdateWindow 不执行,为空才执行重画。 Invalidate 与 UpdateWindow 的区别如下: void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果 一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重 绘。这时 Windows 会在应用程序的消息队列中放置 WM_PAINT 消息。MFC 为窗口类提供 了 WM_PAINT 的消息处理函数 OnPaint,OnPaint 负责重绘窗口。视图类有一些例外,在 视图类的 OnPaint 函数中调用了 OnDraw 函数,实际的重绘工作由 OnDraw 来完成。参数 bErase 为 TRUE 时,重绘区域内的背景将被擦除,否则,背景将保持不变。 它和 UpdateWindow( )区别在于: UpdateWindow( )的作用是使窗口立即重绘。调用 Invalidate 等函数后窗口不会立即重绘, 这是由于 WM_PAINT 消息的优先级很低, 它需要等消息队列中的其它消息发送完后才能被 处理。调用 UpdateWindow 函数可使 WM_PAINT 被直接发送到目标窗口,从而导致窗口 立即重绘。 Invalidate 在消息队列中加入一条 WM_PAINT 消息,其无效区为整个客户区。 UpdateWindow 直接发送一个 WM_PAINT 消息, 其无效区范围就是消息队列中 WM_PAINT 消息(最多只有一条)的无效区。 效果很明显,当调用 Invalidate 之后,屏幕不一定马上更新,因为 WM_PAINT 消息不一定 在队列头部,而调用 UpdateWindow 会使 WM_PAINT 消息马上执行的,绕过了消息队列。 如果调用 Invalidate 之后想马上更新屏幕,那就加上 UpdateWindow()这条语句。 InvalidateRect 只是增加重绘区域,在下次 WM_PAINT 的时候才生效 InvalidateRect 函数中的参数 TRUE 表示系统会在你画之前用背景色将所选区域覆盖一次, 默认背景色为白色,可以通过设置 BRUSH 来改变背景色。 Invalidate()之后:...OnPaint()->OnPrepareDC()->OnDraw() 所以只是刷新在 OnPaint()和 OnDraw()函数中的绘图语句。其它地方没有影响。 Invalidate 标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘。类似 于 PostMessage(WM_PAINT),需要处理到 WM_PAINT 消息时才真正重绘。以为您 Invalidate 之后还有其他的语句正在执行,程序没有机会去处理 WM_PAINT 消息,但当函 数执行完毕后,消息处理才得以进行。 Invalidate 只是放一个 WM_PAINT 消息在队列里,不做别的,所以只有当当前函数返回后, 进入消息循环,取出 WM_PAINT,才执行 PAINT,所以不管 Invalidate 放哪里,都是最后 的。

Invalidate与UpdateWindow区别

第1页

你可能喜欢

热门文档

相关文档

  • Invalidate()与 UpdateWindow()的区别

    Invalidate()与 UpdateWindow()的区别_计算机软件及应用_IT/计算机_专业资料。详细介绍了Invalidate()与UpdateWindow()的区别Invalidate()与 UpdateWindow()的区别:...

  • Invalidate和UpdateWindow的区别

    Invalidate和UpdateWindow的区别_化学_自然科学_专业资料。UpdateData、Invalidate、InvalidateRect 和 UpdateWindow 及 RedrawWindow Invalidate 和 UpdateWindow 的区别: ...

  • ...WM_QUIT的不同、Invalidate和UpdateWindow的区别

    WM_CLOSE,WM_DESTROY,WM_QUIT的不同、Invalidate和UpdateWindow的区别_理学_高等教育_教育专区。窗口的关闭,有多个消息与之对应,而哪一个更适合你使用。刷新窗口...

  • Invalidate()与UpdateAllViews

    Invalidate()与 Invalidate()与 UpdateAllViews 2008-06-16 17:29 Invalidate()...UpdateWindow,如果客户区的任一部分无效,则 UpdateWind 调用窗口过程(如果整个...

  • Invalidate函数介绍

    Invalidate函数介绍_计算机软件及应用_IT/计算机_专业资料。Invalidate函数Invalidate 函数 目录 Invalidate 介绍 与 UpdateWindow( )的区别 与 WM_PAINT 之间的关系 ...

  • Invalidate()函数

    它和 UpdateWindow( )区别在于: UpdateWindow( )的作用是使窗口立即重绘。 调用 Invalidate 等函数后窗口不会立即重绘, 这是由于 WM_PAINT 消息的优先级很低,...

  • invalidate()和postInvalidate() 的区别及使用

    invalidate()和postInvalidate() 的区别及使用_计算机软件及应用_IT/计算机_... 各种阀门的使用区别 26页 免费 Update and Invalidate ... 43页 免费 ...

  • c#编程基础 控件Invalidate Update Refresh的区别(转)

    c#编程基础Invalidate() Update() Refresh()的区别(转) Control.Invalidate方法:使控件的特定区域无效并向控件发送绘制消息。通常情况下,用Invalidate()使区域无效...

  • Invalidate和postInvalidate的区别

    Invalidate 和 postInvalidate 的区别文章分类:移动开发 文章分类 移动开发 android... Invalidate和UpdateWind... 3页 免费 Invalidate与UpdateWind... 2页 免费 ...

  • Invalidate、ValidateRgn、ValidateRect

    不变 。 它和 UpdateWindow( )区别在于: )的作用是使窗口立即重绘 的作用是使窗口立即重绘。 UpdateWindow( ) 的作用是使窗口立即重绘 。 调用 Invalidate ...

站点地图 | 文档上传 | 侵权投诉 | 手机版
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.guandang.net All Rights Reserved.  -  email