为什么我设置的定时器不工作啊?

dhfly 2004-11-25 11:47:57
我在button的click时间中:
SetTimer(1, 100, NULL);
在对话框的OnTimer事件中添加代码。

结果发现点击button后,OnTimer中的代码根本不会运行,设断点查看,程序的流程就不会转到OnTimer事件,怎么回事?
...全文
358 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ayanamiwww 2004-11-27
void CCom2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here

SetTimer(1, 100, NULL);
CDialog::OnOK(); //这句捣的鬼
}

CDialog::OnOK(); 怎么会有这句,对话框都返回了,还能有Timer吗?
回复
linxy2002 2004-11-27
理解楼主,我有时候也会犯这样的错
回复
社会栋梁 2004-11-26
代码贴出来
回复
那么不能保证程序每1000毫秒或者989毫秒就会

---------------
为什么说是989?
回复
shuihen 2004-11-26
问个问题 怎么发新贴
我只能回复
新贴按纽在哪?
回复
Freemanz 2004-11-26
你是不是用的多线程啊?!
回复
xdsh00 2004-11-26
我猜楼主是ON_WM_TIMER ()没有写
回复
dhfly 2004-11-26
谢谢大家,我知道了。
我的代码如下:
void CCom2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here

SetTimer(1, 100, NULL);
CDialog::OnOK(); //这句捣的鬼
}
回复
luolovegui 2004-11-26
你的 WM_TIMER 的接口是不是VC帮你搞的,不是的话,你就要VC帮你搞定。不然的话是不可能不会运行的。
回复
linxy2002 2004-11-26
同意 laiyiling(陌生人·V2.0) 的说法
回复
hchinside 2004-11-26
当前函数完成后,才能执行
回复
saliors 2004-11-26
楼上说得对
回复
Kudeet 2004-11-26
定时器实际上是发送WM_TIMER消息,WM_TIMER消息并不是异步的。WM_TIMER消息放在正常的消息队列之中,和其它消息排列在一起,
比如,如果在SetTimer呼叫中指定间隔为1000毫秒,那么不能保证程序每1000毫秒或者989毫秒就会收到一个WM_TIMER消息。如果其它程序的执行事件超过一秒,在此期间内,您的程序将收不到任何WM_TIMER消息。

你在按钮函数里是不是做了其他的
回复
chuanke 2004-11-26
用回调
回复
kugou123 2004-11-26
WM_TIMER消息优先级比较低,如果你的按钮还有其他运算的话,该消息可能会在运算之后才被响应。
回复
dhfly 2004-11-26
我的里面的确用了多线程,是这个原因吗?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-11-25 11:47
社区公告

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