我创建了一个BUTTON类CMYBUTTION
CMYBUTTON::ONRBUTTONDOWN()
{
    SETTIMER(1,100,NULL);
    CBUTTON::ONRBUTTONDOWN();
}CMYBUTTON::ONRBUTTONUP()
{
    KILLTIMER(1);
    CBUTTON::ONRBUTTONUP();
}CMYBUTTON::ONTIMER()
{
    //一些动作
}在对话框中放置一个按钮,与CMYBUTTON关联,可是有时右键按下弹起后,ontimer还在继续执行,不知道是killtimer无效还是消息丢失?

解决方案 »

  1.   


     BOOL KillTimer( UINT nIDEvent );//既然是bool型的话,你可以跟踪到怎么到killTimer的结果的。最好加点打印信息。
      

  2.   

    用debugview测试一下,在OnRButtonUp中插入
    OutputDebugString("KillTimer()执行了");
    看看是否输出这句话?没输出说明没有响应右键弹起
      

  3.   

    killtimer并不是每次都无效,大多数情况是有效的
      

  4.   

    killtimer并不是每次都无效,大多数情况是有效的
    --
    无效的时候,是OnTimer不断的执行下去,还是OnTimer多执行一会后,才停止。
    估计killtimer执行,OnTimer不是马上停止的
      

  5.   

    是不是可以设一个标记,在ONRBUTTONDOWN中置1,在ONRBUTTONUP中置0,在OnTimer()中判别是否要执行你的功能,这样不必不断地SetTimer()KillTimer()了。
      

  6.   

    你可以用一个BOOL型的变量进行标记啊。如果KILLTIMER成功返回,那么就将BOOL置FALSE。在ontimer前首先判定BOOL值,如果已经为FALSE,直接跳出,不执行,这个速度快多了。在ontimer的执行过程中,也可以进行判定