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函数,就可以了。
展开
 我来答
百度网友482b105da
2011-12-15 · TA获得超过202个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:112万
展开全部
下面代码是能够工作的:
void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
dc.Rectangle( 20, 20, 100, 100 );
}
你是不是OnPaint()函数是自己手工加的,不是通过Wizard家的?函数名字是不是搞错了?
eva1988725
2011-12-14
知道答主
回答量:21
采纳率:0%
帮助的人:13.3万
展开全部
画图的时候在B_Dlg的Onpaint或OnDraw函数里面画,绘制的曲线就不会消失了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
red_parrot
2011-12-14 · TA获得超过192个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:180万
展开全部
肯定要在Onpaint或OnDraw中处理,你先找找这两个消息为何不响应吧,如果能正常响应,加入重绘的处理,就能解决问题了~
追问
VC++自己创建的Onpaint或OnDraw函数(既A_Dlg下的)可以自动重绘,但自己新加的B_Dlg 下的不能自动重绘,可以采用单击按钮调用,既能手动响应,不能自动重绘。打算采用定时器SetTimer,让其定时重绘。还有其他高招吗?
追答
定时器的方式不是不可以,但是不太好,原本是事件触发的,你给改成周期响应,会在不需要刷新的时候刷新,有点儿浪费感情,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
runinggirl
2011-12-14
知道答主
回答量:2
采纳率:0%
帮助的人:3332
展开全部
Invalidate()和InvalidateRect()其实是触发对onPaint()函数的调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贵映0hY
2011-12-14 · TA获得超过181个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:165万
展开全部
楼上正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式