我看有些代码中在invalidaterect执行后,还紧跟着updatewindow?
invalidaterect执行后,不是会发送一个wm_paint消息吗?为何后面还要用updatewindow再发送一个wm_paint消息?不明白,还请各位大侠指点,谢谢!
invalidaterect执行后,不是会发送一个wm_paint消息吗?为何后面还要用updatewindow再发送一个wm_paint消息?不明白,还请各位大侠指点,谢谢!
InvalidateRect并不向指定窗口发消息, 只是通知系统有区域需要更新, 但系统不会立即发送WM_PAINT, 除非消息队列已空.UpdateWindow则是直接向目的窗口发送WM_PAINT消息, 但前提是需要有invalidate的区域.
updatewindow强制立即发送wm_paint消息msdn对invalidaterect解释:
The system sends a WM_PAINT message to a window whenever its update region is not empty and there are no other messages in the application queue for that window.
1:设置无效区 <br>InvalidateRect
2:立即刷新 UpdateWindow()
如果不调用InvalidateRect就调用UpdateWindow,那么UpdateWindow什么都不做。如果调用InvalidateRect后不调用UpdateWindow,则系统会自动在窗口消息队列为空的时候,系统自动发送一WM_PAINT消息