VC++创建了两个对话框A_Dlg,B_Dlg。怎么使他们都能自动重绘?
A_Dlg是自动生成的,可以自动重绘。B_Dlg是后来添加的,A_Dlg调用B_Dlg之后在B_Dlg上绘制了曲线等,B_Dlg被拖动后,绘制的曲线消失,不能自动重绘。我...
A_Dlg是自动生成的,可以自动重绘。B_Dlg是后来添加的,A_Dlg调用B_Dlg之后在B_Dlg上绘制了曲线等,B_Dlg被拖动后,绘制的曲线消失,不能自动重绘。我可以手动再调用绘图程序,让其手动重绘。问怎么使B_Dlg自动重绘?
自己建的Onpaint和OnDraw函数,在两个里面都试过了,不能重绘。
我已解决。OnPaint函数在要添加的类上右击,单击Add Windows Message Handler..添加一个WM_PAINT函数,就可以了。 展开
自己建的Onpaint和OnDraw函数,在两个里面都试过了,不能重绘。
我已解决。OnPaint函数在要添加的类上右击,单击Add Windows Message Handler..添加一个WM_PAINT函数,就可以了。 展开
5个回答
展开全部
画图的时候在B_Dlg的Onpaint或OnDraw函数里面画,绘制的曲线就不会消失了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定要在Onpaint或OnDraw中处理,你先找找这两个消息为何不响应吧,如果能正常响应,加入重绘的处理,就能解决问题了~
追问
VC++自己创建的Onpaint或OnDraw函数(既A_Dlg下的)可以自动重绘,但自己新加的B_Dlg 下的不能自动重绘,可以采用单击按钮调用,既能手动响应,不能自动重绘。打算采用定时器SetTimer,让其定时重绘。还有其他高招吗?
追答
定时器的方式不是不可以,但是不太好,原本是事件触发的,你给改成周期响应,会在不需要刷新的时候刷新,有点儿浪费感情,呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Invalidate()和InvalidateRect()其实是触发对onPaint()函数的调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询