我在view中定义了 函数void CNetworkView::DrawDoc(mdraw *mdr)
然后定义了void CNetworkView::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
view->DrawDoc(mdr);
//你对1号的操作;
break;
case 2:
s2->Send(CurTime);
//对2号的操作;
break;
default:
break;
}
CView::OnTimer(nIDEvent);
}
再在
void CNetworkView::OnDraw(CDC* pDC)
{
CNetworkDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
view->SetTimer(1, 1000, NULL);
view->SetTimer(2 ,2000, NULL);
}
但是程序不总是更新,就是好像没有执行一样

解决方案 »

  1.   

    Ondraw 是会被不断调用的,怎么能在这里 进行SetTimer创建定时器呢
      

  2.   

    没明白具体是什么问题,SetTimer的目的是什么?
    另外,SetTimer只要在初始化的时候调用一次就够了,OnDraw函数会执行很多次。
      

  3.   


    我的目的就是隔一段时间调用一次
    void CNetworkView::DrawDoc(mdraw *mdr)
      

  4.   

    实际情况呢?是从未调用过DrawDoc吗?
    如果你在程序运行过程中没有KillTimer,建议在CNetworkView::OnInitUpdate函数中
    SetTimer(1, 1000, NULL);
    SetTimer(2 ,2000, NULL);
    把CNetworkView::OnDraw中的SetTimer去掉。
      

  5.   

    先不说每隔1秒重画视合不合理,也不知道view->SetTimer(1, 1000, NULL);前面view是什么,但有一个原则,那个窗口
    设置SetTimer,就由哪个窗口接收OnTimer,综以上,应该是在CNetworkView的OnCreate里调用SetTimer(1, 1000, NULL);前面的view不要,
    switch(nIDEvent)
        {
        case 1:
            view->DrawDoc(mdr);//view->为什么加??
       
      

  6.   

    我按你说的

    SetTimer(1, 1000, NULL); 
    SetTimer(2 ,2000, NULL); 
    放到CNetworkView::OnInitUpdate中
    把CNetworkView::OnDraw中的SetTimer删除,
    运行,只执行了一次就完了,
    没有动画的感觉
      

  7.   

    view->DrawDoc(mdr);
    这个view是什么?DrawDoc中是怎么写的?
      

  8.   

    我定义了一个CNetworkView的对象view
    而DrawDoc(mdr);是CNetworkView的成员函数
    所以要调用它更定要加view
    我现在把
    SetTimer(1, 1000, NULL); 
    SetTimer(2 ,2000, NULL); 和初始化全部加到了CNetworkView::OnInitUpdate函数中 
    好像可以了
      

  9.   

    既然DrawDoc等这些函数都是在CNetworkView里,那就在switch里直接调用DrawDoc就可以了。类里面的函数里可以随意调用成员函数的啊在CNetworkView里又去定义一个CNetworkView的对象view干嘛?我看楼主连类,成员函数这些基本功方面都还没搞清
      

  10.   

    在类的内部,this就是当前对象指针(可以省略),无须把类指针另外保存。