以前都是在create里设置setTimer(),然后添加onTimer(),这样程序一启动就会执行onTimer();
我现在想在程序启动后,首先通过菜单弹出一个对话框,然后对话框里有个按钮,通过这个按就来启动程序的onTimer。
那么我应该在那里设置设置setTimer()???

解决方案 »

  1.   

    首先要决定楼主的timer放在哪,然后向这个类发消息,启动timer
      

  2.   

    在你按钮的响应函数里通过发消息或者直接调用的方式来settimer
      

  3.   

    按钮里面执行SetTimer即可
      

  4.   

    if(dlg.DoModal() == IDOK)
    {
         SetTimer(1,1000,NULL);
    }
      

  5.   

    在你要加Timer的MainFrm或者View里面,添加函数StartTimer,函数的实现就是SetTimer
    在你的Dialog的构造函数里面把这个Frame或者View的指针传入,
    然后在Dialog的按钮时间里面调用StartTimer
      

  6.   

    CSTimerDlg* pDlg= (CSTimerDlg*)(AfxGetApp())->GetMainWnd();
    ::SetTimer(pDlg->m_hWnd,1,50,NULL);//启动Timer ::PostMessage(pDlg->m_hWnd,WM_TIMER,1,NULL);//只是调用一次OnTimer事件
      

  7.   

    if(dlg.DoModal() == IDOK) 

         SetTimer(1,1000,NULL); 
    }
    这个不可以,因为我是用对话框中其他自己加的按钮响应(不是ok按钮)。
      

  8.   

    同意:按钮里面执行SetTimer即可
      

  9.   

    我可能没有表达明白我的意思:
    对话框属于view,然后想通过对话框来控制view的显示。(对话框有个按钮,比如是 启动,我想实现这样一个效果,点击启动,view就应该按照我设置的定时器来进行动作)。
    问题:我怎么设置在哪里设置定时器????
      

  10.   

    在你按钮事件中执行它================================================
    CSTimerDlg* pDlg= (CSTimerDlg*)(AfxGetApp())- >GetMainWnd(); 
    ::SetTimer(pDlg- >m_hWnd,1,50,NULL);//启动Timer 
    ===============================================
    CSTimerDlg 《----是包含有Timer 事件那个类名
    加入的位置是在新的窗体的按钮事件中。