sendmessage(WM_PAINT)窗口重绘问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 20:37:35
在view类中,调用sendmessage(WM_PAINT)想引起窗口重绘在view窗口中显示一些信息。
但是在view窗口的左边有一段是空白的,右边显示出了信息,然后将窗口最小化 再打开信息就都显示出来了。
请高手指教

送消息没用,必须指定更新区
使用Invalidate, InvalidateRect(NULL).
RedrawWindow(NULL)
更新全部客户区,(当然也可以指定要更新的区域)

你是老大,你厉害,你竟然敢对窗口发送WM_PAINT?你问过比尔盖兹同意没有?WM_PAINT是你可以随便发的了的吗?

sendmessage(WM_PAINT)
只是在内存里画好了
但没有画到视图里,接着要更新窗口,InvalidateRect(hWnd,&rect,true);

窗口只有在无效的时候才会重绘,其实你不发送消息窗口也会不断地执行OnPaint()这个函数,所以你最小化窗口时窗口无效,再打开后窗口自动重绘,无需发送消息,你也可以用另一个窗口盖住你的窗口再移开,窗口也绘重绘.
那么你若想重绘窗口就首先使窗口无效,具体方法,可以使用Invalidate, InvalidateRect(Rect)这两个函数,前者重绘整个窗口,与RedrawWindow功能一样,后者重绘指定的区域(由Rect决定).