注册 登录
编程论坛 C++教室

关于窗体重绘的问题。

yangfrancis 发布于 2015-03-29 10:36, 702 次点击
借问一下,晚生在子窗体上进行了一些绘图,使用InvalidateRect之后再BeginPaint和EndPaint.以上这些过程都在WM_PAINT分支以外进行,而WM_PAINT里面只画了背景色。结果导致窗体最小化或被覆盖之后被重画时只能重画WM_PAINT下面的内容,即背景色。其他过程里画的内容都没有了。有没有大神知道这个问题怎么解决,请解答一下,谢谢。
8 回复
#2
yangfrancis2015-03-29 22:52
跟据网上一些码友的说法,把WM_PAINT以外的绘图过程从BeginPaint改成了GetDC,这样被遮挡后重绘的问题已解决。但最小化再还原后仍然不能重画。
#3
rjsp2015-03-30 08:22
为什么不写在 WM_PAINT 的函数中呢?
#4
yangfrancis2015-03-30 13:36
写在WM_KEYDOWN中的,随着键盘事件发生变化。绘图内容是千变万化的。
#5
wmf20142015-03-30 16:24
在WM_SIZE里getdc
#6
rjsp2015-03-30 16:25
回复 4楼 yangfrancis
不管你绘图变不变,依然写在 WM_PAINT 中。
#7
yangfrancis2015-03-30 22:18
回复 5楼 wmf2014
GetDC了还是不行,之后是不是还要其他操作?
#8
yangfrancis2015-03-30 22:22
回复 6楼 rjsp
考虑过写在WM_PAINT中,但具体到我这个案例中可操作性确实太低了。
#9
rjsp2015-03-31 08:19
回复 8楼 yangfrancis
不明白有什么难操作的,这是唯一正确的方法。

WM_KEYDOWN: 设置当前状态,并调用 InvalidateRect 等方法
WM_PAINT: 根据当前状态作图
1