zoukankan      html  css  js  c++  java
  • MFC中的KillTimer

    在Dialog中添加一个Timer。

    用如下的代码停用一个Timer总是不好用:

    void CDialog2::OnTimer (UINT TimerVal)

    {

    //////////////////////////////////////////////

    //

    // Stop the timer

    //

    //////////////////////////////////////////////

     

     

        //MessageBox(TEXT("TIMER"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

     

        if (!::KillTimer(NULL,TimerVal))

    {

            MessageBox(TEXT("Unable to stop timer"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

    }

     

    //////////////////////////////////////////////

    //

    // Process the event

    //

     

    //////////////////////////////////////////////

     

     

    //////////////////////////////////////////////

    //

    // Restart the timer, if needed, before exiting

    //

    //////////////////////////////////////////////

     

    }

     

    弄了半天,发现用下面的代码就可以成功。

    void CDialog2::OnTimer (UINT TimerVal)

    {

    //////////////////////////////////////////////

    //

    // Stop the timer

    //

    //////////////////////////////////////////////

     

     

        //MessageBox(TEXT("TIMER"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

     

        if (!KillTimer(TimerVal))

    {

            MessageBox(TEXT("Unable to stop timer"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

    }

     

    //////////////////////////////////////////////

    //

    // Process the event

    //

     

    //////////////////////////////////////////////

     

     

    //////////////////////////////////////////////

    //

    // Restart the timer, if needed, before exiting

    //

    //////////////////////////////////////////////

     

    }

     

    另外根据MSDN, KillTimer对已经发到Message queue的Timer消息不能杀死。

    (MSDN链接:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644903(v=vs.85).aspx )

    所以比如如下的代码,会弹出一次对话框。

    void CDialog2::OnTimer (UINT TimerVal)

    {

    //////////////////////////////////////////////

    //

    // Stop the timer

    //

    //////////////////////////////////////////////

     

     

        //MessageBox(TEXT("TIMER"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

     

        if (!KillTimer(TimerVal))

    {

            MessageBox(TEXT("Unable to stop timer"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

    }

     

     

        MessageBox(TEXT("timer here."), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);

     

    //////////////////////////////////////////////

    //

    // Process the event

    //

     

    //////////////////////////////////////////////

     

     

    //////////////////////////////////////////////

    //

    // Restart the timer, if needed, before exiting

    //

    //////////////////////////////////////////////

     

    }

     

  • 相关阅读:
    Sensor Fusion-based Exploration in Home Environments using Information, Driving and Localization Gains(基于传感器融合的使用信息、驾驶和定位增益在家庭环境中的探索)
    Git中从远程的分支获取最新的版本到本地
    git拉取远程分支到本地分支或者创建本地新分支
    win7下使用git
    ADAS

    struct对齐
    STL容器
    智能指针
    c++中的基本知识点
  • 原文地址:https://www.cnblogs.com/time-is-life/p/8412870.html
Copyright © 2011-2022 走看看