我在MFC中有对话框应用程序。要刷新对话框上的视图,我们使用WM_NCPAINT
,它会调用OnNCPaint
,但有时视图不会刷新。行为并不总是可重复的。 WM_PAINT
也发生了同样的行为。
当我们使用SendMessage(WM_SIZE)
时,行为不可重复,并按预期工作。
在检查代码之前,我想确保,我应该使用WM_SIZE
代替WM_NCPAINT
还是WM_PAINT
,因为它可以正常运行。
答案 0 :(得分:6)
不,你不应该使用其中任何一种。
要指示需要重新绘制窗口,请调用InvalidateRect
功能。这就是你应该使用的。
要强制重新绘制窗口现在,请调用UpdateWindow
函数。
无论哪种方式,都不要开始发送随机消息,并祈祷其中一条消息的副作用是重新绘制窗口。
答案 1 :(得分:5)
如果我正确理解了这个问题,您是否正在发送WM消息以触发重新绘制对话框?正确的方法是使客户区无效。
您可以直接使用Windows API函数InvalidateRect()
,也可以使用MFC中的CWnd::Invalidate()
方法。