• 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

    //

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

     

    }

     

  • 相关阅读:
    vite的使用
    webpack--Plugin
    webpack--loader
    uniapp 或小程序,通过蓝牙连接设备, 给设备配网
    每一项与之前一项相加
    vue使用vue-fullpage
    React基礎
    无间隙循环轮播效果
    Wow.js动画效果
    正则表达式
  • 原文地址:https://www.cnblogs.com/time-is-life/p/8412870.html
Copyright © 2020-2023  润新知