分类：电脑/网络-程序设计
问题：求助关于vc++中Invalidate()函数请问vc中Inva 
请问中Invalidate()函数到底是什么含义？应用中需要注意哪些问题？什么情况下使用？这个函数能否用于输出页面的刷新？请大虾们帮帮小妹，这个对我很重要。给解释得清楚详细一点，谢谢！不胜感激
回答：Invalidate标记一个需要重绘的无效区域，并不意味着调用该后就立刻进行重绘。类似于PostMessage(WM_PAINT)，需要处理到WM_PAINT消息时才真正重绘。以为您Invalidate之后还有其他的语句正在执行，程序没有机会去处理WM_PAINT消息，但当函数执行完毕后，消息处理才得以进行。Invalidate只是放一个WM_PAINT消息在队列里，不做别的，所以只有当当前函数返回后，进入消息循环，取出WM_PAINT，才执行PAINT，所以不管Invalidate放哪里，都是最后的。InvalidateRect(hWnd,&rect,TRUE);向hWnd窗体发出WM_PAINT的消息，强制客户区域重绘制，rect是你指定要刷新的区域，此区域外的客户区域不被重绘，这样防止客户区域的一个局部的改动，而导致整个客户区域重绘而导致闪烁，如果最后的参数为TRUE，则还向窗体发送WM_ERASEBKGND消息，使背景重绘，当然在客户区域重绘之前。UpdateWindow()只向窗体发送WM_PAINT消息，在发送之前判断GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制的客户区域，如果没有，则不发送WM_PAINT如果希望立即刷新无效区域，可以在调用InvalidateRect之后调用UpdateWindow，如果客户区的任一部分无效，则UpdateWindow将导致Windows用WM_PAINT消息调用窗口过程（如果整个客户区有效，则不调用窗口过程）。这一WM_PAINT消息不进入消息队列，直接由WINDOWS调用窗口过程。窗口过程完成刷新以后立刻退出，WINDOWS将控制返回给程序中UpdateWindow调用之后的语句。