MFC OnTimer的消息处理函数为什么不能停止计时?

xinxiyini 2015-03-30 09:15:24

在OnBnClickedButton1()中
SetTimer(1, (TimeNum + 1) * 100, NULL);
(假设Time Num=5).

其消息处理函数
void CModify::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (nIDEvent == 1)
{
MessageBox(_T("ON TIME!"));
KillTimer(1);
}
CDialogEx::OnTimer(nIDEvent);
}

想要实现的目的是当计时5秒以后利用消息处理函数终止定时函数,但是这个写法不知道有问题没有,因为每次过5秒还是会回到OnTime()中。
...全文
237 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2015-03-30
  • 打赏
  • 举报
回复
MessageBox有自己的消息循环,会阻塞所有者窗口的部分消息。
xinxiyini 2015-03-30
  • 打赏
  • 举报
回复
引用 2 楼 jason_wentzel 的回复:
MessageBox(_T("ON TIME!")); KillTimer(1); 你用MessageBox阻塞了KillTimer的执行,当然每隔5秒就进来了,你把这两句交换位置
非常感谢您的回答,还有一个问题,您看下能不能解决下,关于MSCOMM控件利用方面的,我一直实现不了。 for (int i = 1; i <= channel; i++) { Senddata[0] = j; Senddata[1] = 6; Senddata[2] = 0x10; Senddata[3] = 0x0B + (i - 1) * 3; Senddata[4] = 0x00; Senddata[5] =SetValue3 ;//设定值 Senddata[6] = crc_l; Senddata[7] = crc_h; //MessageBox(_T("ddd")); int TimeNum; TimeNum = m_SendSpeet.GetCurSel(); if (TimeNum >= 0) { MyComm2.put_Output(COleVariant(Senddata));//将要发送的数据发送到输出缓冲区 SetTimer(1, (TimeNum + 1) * 100, NULL);//延时函数 yanz = 0; CString ca6; ca6.Format(_T("%d"), yanz); MessageBox(ca6); //在执行过程中,加了这句,就会在界面上正常显示循环channel次,不加就只循环一次,我很苦恼这是为什么。 } else { MessageBox(_T("没有选择间隔毫秒!")); } *rx = NULL; receive = false; } messagebox是有别的什么功能吗,我在哪里的理解有误,麻烦您给看下,不甚感激。
孤客天涯 2015-03-30
  • 打赏
  • 举报
回复
MessageBox(_T("ON TIME!")); KillTimer(1); 你用MessageBox阻塞了KillTimer的执行,当然每隔5秒就进来了,你把这两句交换位置
worldy 2015-03-30
  • 打赏
  • 举报
回复
The KillTimer function does not remove WM_TIMER messages already posted to the message queue. 也就是说,已经发送的定时消息仍然会被执行

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧