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

    //

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

     

    }

     

  • 相关阅读:
    eclipse如何安装反编译插件
    (原创)Android 沉浸式状态栏实现(来自FlymeAPI)
    android:scaleType属性(转)
    Eclipse快捷键(转)
    Debug调试
    (Android)Activity生命周期详解(原创)
    Android Handler机制简介
    Android学习路线(来自mars老师)
    Android AsyncTask异步任务
    Android Service(二)
  • 原文地址:https://www.cnblogs.com/time-is-life/p/8412870.html
Copyright © 2011-2022 走看看