如何在MyDoc类循环处理的数据每次能够在MyView类OnDraw里显示?

tuqu 2006-05-27 02:40:43
在MyDoc类一个函数建立个循环,每次循环要处理数据,处理完以后,updateallview,(我以为应该可以调用在MyView类OnDraw里显示数据在视图上),然后进行下一次循环。但这样建立的循环,发现非要循环结束以后,才会调用OnFraw。也就是说在循环的时候无法显示数据。
请教大虾,有什么办法解决这个问题?
...全文
219 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pripor 2006-05-28
  • 打赏
  • 举报
回复
doc中获取view的dc或者直接调用view的ondraw的例子

--------------------------------
GetActiveView()->onDraw
不过这是很危险的方法
oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣) 的建议才是正道
lijun624 2006-05-27
  • 打赏
  • 举报
回复
把循环放到view类里去,doc只用来存取数据。在view类里获得doc的数据就很方便了
tuqu 2006-05-27
  • 打赏
  • 举报
回复
谢谢各位热心帮助。呵呵!
本来挺郁闷的。现在感觉有点曙光了。
有没有doc中获取view的dc或者直接调用view的ondraw的例子?
如果直接调用OnDraw,那么其参数如何获得?就是OnDraw(CDC* pDC)中的pDC,
它是view的dc吗?
oyljerry 2006-05-27
  • 打赏
  • 举报
回复
放到线程中处理大数据量,然后自己控制间隔的更新等
NetDraw 2006-05-27
  • 打赏
  • 举报
回复
在WIN32的消息处理机制中,WM_PAINT消息的级别是特别低的,一般情况下差不多也就是WM_TIMER的消息比他低一点,其他消息都比他要高,这样只要有其他事情在处理,则系统就不会进行绘图操作,所以当你在循环过程中调用UpdateAllView(里面也是向DOC所包含的VIEW传递WM_PAINT消息)方法时是没有任何作用的。要想解决这个问题,可以通过在DOC中获取VIEW的DC,然后在循环的过程中直接实现绘制代码,还有也可以直接调用view的OnDraw函数,当然使用多线程来处理,也是不错的选择。
tuqu 2006-05-27
  • 打赏
  • 举报
回复
停留5秒,此法可能不行吧,单步调试,没有发现能调用OnDraw。(也可能方法不对,有没有比较好的调试方法,总觉得vc中的消息有点神出鬼没的)。
不知怎么停留。
试了sleep,但是好像不行。
tuqu 2006-05-27
  • 打赏
  • 举报
回复
停留5秒?如何停留,sleep?谢谢
tuqu 2006-05-27
  • 打赏
  • 举报
回复
谢谢!您的意思是要用到多线程技术了?这方面还不太懂,要去看看书,请大虾推荐一下书或相关资源。
lijun624 2006-05-27
  • 打赏
  • 举报
回复
每次循环完停留5秒让你看看OnDraw就知道了,updateallview还是会执行的,只不过来不及了。
Kudeet 2006-05-27
  • 打赏
  • 举报
回复
当然拉, 你的程序一直在进行循环, 它哪里来的时间去更新呢? 把你的数据处理放入一个线程里进行, 然后用PostMessage函数通告View进行重画,

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧