Invalidate()与 UpdateAllViews()有什么分别 区别大着呢: Invalidate()是让程序重画窗口。 UpdateAllViews()是在DOC/VIEW结构中,当一个视图的数据改变后,通知所有视图作相应的改变,和重画毫无关系。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这两个函数的功能都是通知程序做相应的改变,Invalidate()是让程序再调用一次OnDraw函数,重画窗口。UpdateAllViews()是在DOC/VIEW结构中,当一个视图的数据改变后,通知所有视图作相应的改变。 Invalidate()可以让窗口重画,如pWnd->Invalidate()可以让pWnd所指向的窗口重画,也可以用InvalidateRect(NULL).但UpdateAllviews()只是让与这个文档相关的视图窗口重画,但主框架窗口等并不重画,所以要看所使用的对象来调用相应的函数。 Invalidate()是使窗口无效,使系统向其发WM_PAINT消息,使的程序的OnPaint被调用重画客户区。而UpdateAllViews()是文档与视之间的联系,调用从它会使程序与此文档相关的所有视的UpdateView被调用至于是否重画以及怎么画是由各视的UpdateView来决定的。 上面有个函数写错了改为Invalidate()是使窗口无效,使系统向其发WM_PAINT消息,使的程序的OnPaint被调用重画客户区。而UpdateAllViews()是文档与视之间的联系,调用从它会使程序与此文档相关的所有视的OnUpdate被调用至于是否重画以及怎么画是由各视的OnUpdate来决定的。 老兄: Invalidate()是Cwnd的成员函数,与DOC-VIEW无关; UpdateAllViews是CDocument的成员函数,具体体现DOC-VIEW的精神。 如果仅重画当前窗口用 this->Invalidate(); 如果通知所有和当前文档相关的窗口重画用GetDocument()->UpdateAllViews()(在View中)或this->UpdateAllViews()(在Doc中) Invalidate()函数产生一条WM_PAINT消息,并送入windows消息队列中,是窗口产生重画。而,UpdateAllViews 并进入windows消息队列中,直接产生重画。 上面的写错了。正确的是:Invalidate()函数产生一条WM_PAINT消息,并送入windows消息队列中,是窗口产生重画。而,UpdateAllViews 并不进入windows消息队列中,直接产生重画。 请问这段线程代码为何提示如下错误? 关于MFC菜单中的复制功能 技术讨论群13071149,欢迎您的加入! 怎么样给状态栏上色? vc++中如何编写系统日志? 高分紧急求助:如何用dLL导出自定义的模板类? 请问到哪去问关于网络的问题??在线等!!! 菜鸟询问简单问题 去一家公司面试成功了,推荐给大家,不看后悔哦!!! 请问SHELLEXECUTE的执行方式是异步的还是同步的? 请教(急)!如何用VC显示并打印数据库中的表或查寻? 问题求救--计算机经常出现待机状态!
而UpdateAllViews()是文档与视之间的联系,调用从它会使程序与此文档相关的所有视的UpdateView被调用至于是否重画以及怎么画是由各视的UpdateView来决定的。
而UpdateAllViews()是文档与视之间的联系,调用从它会使程序与此文档相关的所有视的OnUpdate被调用至于是否重画以及怎么画是由各视的OnUpdate来决定的。
Invalidate()是Cwnd的成员函数,与DOC-VIEW无关;
UpdateAllViews是CDocument的成员函数,具体体现DOC-VIEW的精神。
如果仅重画当前窗口用 this->Invalidate();
如果通知所有和当前文档相关的窗口重画用GetDocument()->UpdateAllViews()(在View中)或this->UpdateAllViews()(在Doc中)
而,UpdateAllViews 并进入windows消息队列中,直接产生重画。
Invalidate()函数产生一条WM_PAINT消息,并送入windows消息队列中,是窗口产生重画。
而,UpdateAllViews 并不进入windows消息队列中,直接产生重画。