MFC API——》InvalidateRect & UpdateWindow
来源:互联网 发布:华为荣耀4x手机壳淘宝 编辑:程序博客网 时间:2024/06/08 09:51
void Invalidate( BOOL bErase )执行之后调用函数的次序为:
...OnPaint()->OnPrepareDC()->OnDraw()
所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它地方没有影响。
Invalidate()标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘,不需要等待返回。类似于PostMessage(WM_PAINT),需要处理到WM_PAINT消息时才真正重绘。如果您Invalidate()之后还有其他的语句正在执行,程序没有机会去处理WM_PAINT消息,只有当函数执行完毕后,消息处理才得以进行。
Invalidate()只是放一个WM_PAINT消息在队列里,不做别的,所以只有当当前函数返回后,进入消息循环,取出WM_PAINT,才执行OnPaint(),所以不管Invalidate放哪里,都是最后执行的。
只将窗口显示区域标记为无效以产生WM_PAINT消息,对于某些应用程序来说也许不是完全令人满意的选择。在呼叫InvalidateRect之后,Windows将WM_PAINT消息放入消息队列中,最后由窗口消息处理程序处理它。然而,Windows将WM_PAINT消息当成低优先级消息,如果系统有许多其它的动作正在发生,那么也许会让您等待一会儿工夫。这时,当对话框消失时,将会出现一些空白的「洞」,程序仍然等待更新它的窗口。
如果您希望立即更新无效区域,可以在呼叫InvalidateRect之后呼叫UpdateWindow:
UpdateWindow (hwnd) ;
UpdateWindow (hwnd) ;如果显示区域的任一部分无效,则UpdateWindow将导致Windows用WM_PAINT消息呼叫窗口消息处理程序(如果整个显示区域有效,则不呼叫窗口消息处理程序)。这一WM_PAINT消息不进入消息队列,直接由Windows呼叫窗口消息处理程序。窗口消息处理程序完成更新后立即退出,Windows将控制传回给程序中UpdateWindow呼叫之后的叙述。
您可能注意到,UpdateWindow与WinMain中用来产生第一个WM_PAINT消息的函数相同。最初建立窗口时,整个显示区域内容变为无效,UpdateWindow指示窗口消息处理程序绘制显示
BOOL RedrawWindow(HWND hwnd,CONST RECT* lprcUpdate,HRGN hrgnUpdate,UINT fuRedraw)
RedrawWindow的作用相当于 InvalidateRect + UpdateWindow
UpdateData()这个函数不是刷新界面用的,更新控件的显示数据的UpdateData();参数为FALSE时,将界面上控件绑定的变量的数据导到控件内,参数为TRUE时,导入方向则相反。
- MFC API——》InvalidateRect & UpdateWindow
- MFC点点滴滴——Invalidate/InvalidateRect/UpdateWindow
- MFC Invalidate() 与 InvalidateRect() 与 UpdateWindow()
- Invalidate、InvalidateRect和UpdateWindow
- InvalidateRect() Invalidate() UpdateWindow()
- InvalidateRect and UpdateWindow
- InvalidateRect UpdateWindow RedrawWindow
- InvalidateRect,invalidate,updatewindow
- InvalidateRect()、UpdateWindow()、RedrawWindow()区别
- InvalidateRect 与 UpdateWindow
- InvalidateRect,invalidate,updatewindow
- InvalidateRect,invalidate,updatewindow
- RedrawWindow, UpdateWindow,InvalidateRect 用法
- RedrawWindow, UpdateWindow,InvalidateRect 用法
- Invalidate()、InvalidateRect()、InvalidateRgn、UpdateWindow()
- RedrawWindow, UpdateWindow,InvalidateRect 用法
- InvalidateRect()、UpdateWindow()、RedrawWindow()区别
- InvalidateRect()、UpdateWindow()、RedrawWindow()区别
- ftp 文件上传 java
- 右键实现复制文件路径
- mysql配置和优化
- 关于oracle疑问以及杂记【收集中】
- RTP打包发送H264(下)
- MFC API——》InvalidateRect & UpdateWindow
- 一步一步写算法(之克鲁斯卡尔算法 上)
- html5 canvas 绘制上下浮动的字体
- 自己推荐的经典好书展示(计算机、企业管理学、生存)
- Ubuntu10.04下tftp服务的配置--------put&get问题已解决
- linux的内存开辟
- 也看二代身份证的安全问题
- windows下使用perl Net:SMTP_auth发送邮件
- 嵌入式Web服务器学习之HTTP协议