在窗口刷新和绘制的过程中,常常需要用到窗口刷新函数。一般用于窗口图形刷新的函数有:UpdateWindows()Invaldate()InvaldateRect()

先说UpdateWindows(),当调用这个函数的时候,会立即让当前的窗口失效,然后对整个窗口立即进行重绘。UpdateWindows()函数调用的时候直接将OnPaint调用到目标窗口,使目标窗口立即进行重绘。

Invaldate()函数的调用则不会立即引起窗口重绘,因为Invaldate()函数是通过调用OnPaint函数来进行窗口绘制的,而OnPaint函数在消息队列中的处理优先级较低。所以调用Invaldate函数则不会立即引起窗口的重绘。

Invaldate函数函数中的参数是用来控制函数是否对背景进行擦除,当使用Invaldate的时候将函数参数设置成true或者不进行设置的时候,函数会对窗口的背景进行擦除,这个时候在刷新窗口的时候,会看到窗口有闪烁现象。而当将参数设置成false的时候,则不会对背景进行擦除,只对绘制的图形进行擦除,则看不到闪烁现象。

InvaldateRece()函数的消息触发机制和UpdateWindow差不多,都是在调用该函数之后,会立即触发调用窗口重绘函数,导致窗口进行重绘。但是InvaldateRect是通过指定失效矩形区域来控制重绘区域的。

InvaldateRect函数的参数中也有一个指定是否擦除背景色的参数,具体用法和Invaldate函数的用法一致,在此就不再敷述。

MFC 刷新函数:Invaldate,UpdateWindow,InvaldateRect的更多相关文章

  1. MFC Attach()函数和Detach()函数

    一.Windows对象和MFC对象的区别?MFC对象实际上并没有把整个Windows对象都包装在其中.对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口对象 ...

  2. MFC 虚函数与消息映射区别

    初学MFC添加函数时,总是纠结于是 Add  windows message handler or Add virtual function 说到底不理解MFC中虚函数与消息处理函数的设计区别 本人理 ...

  3. MFC常用函数

    1.MFC的常用函数(只是找了些经常使用的,这里没有的可以CSDN查找,不需要都记住,经常使用自动就会记得) 1)GetDlgItemText(ID ,str)作用: 对话框中获取文本第一个参数为要获 ...

  4. MFC中 Invalidate() , InvalidateRect() , UpdateWindow(), Redrawwindow() 区别

    1. void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效.窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口 ...

  5. MFC 刷新失效的Picture控件

    问题描述:如在摄像头显示时,关闭摄像头,此时Picture控件仍然显示最后一帧图像,需要刷新掉,还原Picture控件.或者重复显示两张不同大小的图片时,第二张背景有第一张图片残留. 解决方法1:(最 ...

  6. [游戏学习26] MFC 时间函数 画图形

    >_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似. >_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别 >_<:ABC.h #d ...

  7. QWidget的六个刷新函数(居然有QWidget::erase函数,且并不产生绘制事件)

    Qt paintevent事件   一.主要理解一下几个方法和属性: 1.QWidget * QScrollView::viewport () const 2.void QWidget::paintE ...

  8. MFC特定函数的应用20160720(SystemParametersInfo,GetWindowRect,WriteProfileString,GetSystemMetrics)

    1.SystemParametersInfo函数可以获取和设置数量众多的windows系统参数 MFC中可以用 SystemParametersInfo(……) 函数来获取和设置系统信息,如下面例子所 ...

  9. MFC中函数名前加 :: 原因

    在开发MFC之前,开发的是以AFx(Application Frameworks,x是没有什么意义的)开头的一些函数.但是那个时候开发的函数并没有进行封装,但是有很多很有用的函数.最后AFx开发失败, ...

随机推荐

  1. DATGRIDVIEW如何不选择第一行,第一列

    DataBindingComplete事件中写 ClearSelection();

  2. ecshop You don't have permission to access / on this server

    回复 6# 晓天 确实是这个短标签的事情,谢谢了啊. 第一种方法:替换程序里的内容,以后就省心了. 针对所有的php脚本 在DW里面运行查找替换l  主要做替换操作 当然是短标签替换为整标签 注意顺序 ...

  3. C# 把string字符导出到txt文档方法

    public static string writtxt(string html, string file) { FileStream fileStream = new FileStream(Envi ...

  4. Android使用genymotion模拟器

    做android开发这么久了,最头痛的就是默认的模拟器慢的像蜗牛一样,实在是受够了.以前知道有genymotion存在,但是一直没有去用,今天下来用了下,哇,速度超快啊,还在用默认模拟器的小伙伴快来吧 ...

  5. Thinkphp5笔记八:路由别名Route

    主要作用:隐藏自己的真实路由名称 application/Route.php 使用方法一: <?php use think\Route; Route::alias('home','index/i ...

  6. Masonry插件:内容始终水平居中

    跟随浏览器框架大小,主题内容居中 代码 <!DOCTYPE html> <html> <head> <title>masonry瀑布流插件</ti ...

  7. 小程序navigator跳转路径url写法

    小程序navigator跳转路径url要写  要跳转的的页面文件夹相对于当前页面的页面文件夹的位置,即相对路径. 比如我当前页面跳转到同级目录下的另一个页面如下: <navigator url= ...

  8. 如何在eclipse中使用mvn clean install

    1.在Maven项目或者pom.xml上右键——>Run As ——>“Maven Build...”或者Run Configuration——>“Maven Build” 2.在“ ...

  9. Innodb表空间

    Innodb有两种管理表空间的方法 独立表空间:每一张表都会生成独立的文件来进行存储,每一张表都有一个.frm表描述文件,和一个.ibd文件.其中ibd文件包括了单独一个表的数据内容和索引内容. 共享 ...

  10. windows 下为Python安装redis

    最近在看<redis实战>,里面的redis示例都是Python写的,先将环境整好 启动redis redis-server.exe  redis.conf 安装了python2.7 安装 ...