• MFC Timer定时器


    知识点:
      定时器Timer
      创建定时器
      销毁定时器
      代码测试
    
    
    一、  创建定时器 
    
    UINT SetTimer(
      
    HWND hWnd,             // 指定关联定时器的窗口句柄,在MFC版将省略此参数
      
    UINT nIDEvent,           // 定时器ID  
    UINT uElapse,             // 时间间隔  单位毫秒
      
    TIMERPROC lpTimerFunc   //定时器回调函数地址
    
    );
    
    定时器回调函数格式
    
    VOID CALLBACK TimerProc(
     
    HWND hwnd,     // handle of window for timer messages
       
    UINT uMsg,       // WM_TIMER message
      
    UINT idEvent,     // timer identifier
      
    DWORD dwTime   // current system time
    );
    
    
    二、  销毁定时器
    BOOL KillTimer(
     
    HWND hWnd,    // handle of window that installed timer
       在MFC版将省略此参数
    
    UINT uIDEvent   // timer identifier
    
    );
    
    三、  代码测试
     //实时显示 当前时间  参考C语言053课
    time_t t;
    time(&t);
    tm *TimeInfo=localtime(&t);
    m_sTime.Format(L"%02d:%02d:%02d",TimeInfo->tm_hour,TimeInfo->tm_min,TimeInfo->tm_sec);
    
    
    
    
    //代码
    // CDialog_Timer 消息处理程序
    void CALLBACK EXPORT TimerProc(
                                   HWND hWnd,      // handle of CWnd that called SetTimer
                                   UINT nMsg,      // WM_TIMER
                                   UINT nIDEvent,   // timer identification
                                   DWORD dwTime    // system time
                                   )
    {
    
        if (nIDEvent==myTimerID) //
        {
            //执行代码
            TRACE("my TimerProc %d
    ",dwTime);
            //显示当前时间
            time_t t;
            time(&t);
            tm *timeinfo=localtime(&t);
            TRACE("%02d:%02d:%02d",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
         
        }
    }
    
    
    void CDialog_Timer::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
        //SetTimer(1001,1000,NULL);//WM_TIMER
        SetTimer(1001,1000,TimerProc);//不产生WM_TIMER
    }
    
    LRESULT CDialog_Timer::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
        // TODO: 在此添加专用代码和/或调用基类
      //if (message==WM_TIMER)
      //{
         // if (wParam==myTimerID) //
         // {
            //  //执行代码
            //  TRACE("1111111111
    ");
            //  //显示当前时间
            //  time_t t;
            //  time(&t);
            //  tm *timeinfo=localtime(&t);
            //  m_sTime.Format(L"%02d:%02d:%02d",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
            //  UpdateData(false);
         // }
    
      //}
        return CDialog::WindowProc(message, wParam, lParam);
    }
    
    void CDialog_Timer::OnBnClickedButton2()
    {
        // TODO: 在此添加控件通知处理程序代码
        KillTimer(myTimerID);//销毁定时器
    }
    
    void CDialog_Timer::OnTimer(UINT_PTR nIDEvent)
    {
        // TODO: 在此添加消息处理程序代码和/或调用默认值
        if (nIDEvent==myTimerID) //
             {
              //执行代码
              TRACE("1111111111
    ");
              //显示当前时间
              time_t t;
              time(&t);
              tm *timeinfo=localtime(&t);
              m_sTime.Format(L"%02d:%02d:%02d",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
              UpdateData(false);
             }
        CDialog::OnTimer(nIDEvent);
    }
  • 相关阅读:
    Git——快速安装Git及初始化配置【二】
    Git——Git的简单介绍【一】
    web scraper——简单的爬取数据【二】
    web scraper——安装【一】
    PHP——实现随机打乱一个二维数组
    Vue——显示微信用户名称中enjoin表情
    Vue——轻松实现vue底部点击加载更多
    微信报错——10003
    Java_myBatis_逆向工程
    Java_myBatis_XML代理_动态SQL
  • 原文地址:https://www.cnblogs.com/whzym111/p/6229874.html
Copyright © 2020-2023  润新知