各位大侠:
SetTimer和OnTimer到底怎么配合使用阿,谢谢了 
void CTesttimerDlg::OnOK() 
{UINT m_nTimer = SetTimer(1,5000,NULL);}void CTesttimerDlg::OnTimer(UINT nIDEvent)
{
switch (nIDEvent)
{
case 1: ///处理ID为24的定时器
   MessageBox("test");
   break;}
CDialog::OnTimer(nIDEvent);
}
我点“确定”也就是执行OnOK(),怎么不是隔5秒 弹出一个test 窗口

解决方案 »

  1.   

    前提是你要把MessageBox关闭了才行,因为MessageBox没关闭就不会往下执行,也就是不会再弹出来
      

  2.   

    我试了下 可以弹出啊 唯一的区别是前面没有你那个UINT m_nTimer = 
    但是我想和那没关系 你跟下代码看看
      

  3.   

    ONOK是什么函数啊,这个函数是梆定了那个确定键,默认的dialog 呼叫这个函数后就直接退出
      

  4.   

    我这里是 点 “确定”就立刻弹出 “test",然后就完事了 
    另外,我想知道 Ontimer(),在哪调用阿 ,从代码看 没调用 它阿,怎么执行的
      

  5.   

    呵呵,原来是这样 ,那楼主所以的不是隔5秒弹出,是因为用SetTimer设置的时间不是准确的,不能做到完全是隔5秒就会执行一次
      

  6.   

    void CTesttimerDlg::OnOK() 
    不要用这个名字啊
    下面这样就okvoid Ctest1Dlg::OnBnClickedButton1()
    {
    // TODO: Add your control notification handler code here
    SetTimer(1,5000,NULL);
    //OnOK(); 没有你看下有什么效果
    }void Ctest1Dlg::OnTimer(UINT_PTR nIDEvent)
    {
    // TODO: Add your message handler code here and/or call default
    switch(nIDEvent)
    {
    case 1:
    MessageBox(_T("test"),0,0);
    break;
    default : 
    break;
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  7.   


    SetTimer()指定了时间,然后时间到,就会发送 WM_TIMER消息,然后你的OnTImer绑定了这个消息
      

  8.   

    UINT m_nTimer = SetTimer(1,5000,NULL); 
    timer对象不能实现精确定时控制,只能根据系统运行资源状况得到一个模糊的控制精度;
    可以采用 
      

  9.   


    UINT m_nTimer = SetTimer(1,5000,NULL); 
    timer对象不能实现精确定时控制,只能根据系统运行资源状况得到一个模糊的控制精度; 
    可以采用 下面的途径去控制;System.DateTime.Now.TimeOfDay.Ticks
      

  10.   

    SetTimer时间有点不准的,可以考虑使用高精度计时器
      

  11.   

    OnBnClicked 这个button要设置什么属性吗,我按你的写法还是没有实现阿
      

  12.   

    void CTest1Dlg::OnButton1() 
    {
        // TODO: Add your control notification handler code here
        SetTimer(1,5000,NULL);
        //OnOK(); 
    }void CTest1Dlg::OnTimer(UINT_PTR nIDEvent)
    {
        // TODO: Add your message handler code here and/or call default
        switch(nIDEvent)
        {
        case 1:
            MessageBox(_T("test"),0,0);
            break;
        default : 
            break;
        }
            CDialog::OnTimer(nIDEvent);
    }
    我是这样写的,没有任何效果
      

  13.   


    OnBnClickedButton1() 这个函数会响应button的单击消息啊
    ON_BN_CLICKED(IDC_BUTTON1, &Ctest1Dlg::OnBnClickedButton1)
    是button id
    afx_msg void OnBnClickedButton1();