SetTimer、killtimer、ontimer函数在.c 中如何使用,使用win32中接口,也可以

我想实现每五秒输出一个数字就行,用ontimer和timerproc(settimer的回调)分别实现,我现在就是发送消息的这部分不明白,不会连接起来。简单的说明下(1)... 我想实现 每五秒 输出一个数字就行,用ontimer 和 timerproc(settimer的回调)分别实现,我现在 就是 发送消息的这部分 不明白,不会连接起来。
简单的 说明下
(1)
UINT_PTR tmp;
tmp = SetTimer(NULL,1,5000,NULL);
Ontimer(tmp)
{printf("aaa");
}
(2)SetTimer(NULL,1,5000,timerproc);
在线等。。。。
高手来帮下忙,谢谢
展开
 我来答
BattleMacross
2011-10-12 · TA获得超过400个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:105万
展开全部
SetTimer(NULL, 1, 5000, timerproc)表示定时器标志符为1(当你设置了多个Timer时,用来区别他们),每隔5000ms触发一个Timer事件,timerproc是你设置的回调函数。

有两种处理方式:
1.将回调函数设置为NULL,通过window中捕获WM_TIMER消息来处理。估计你使用的是MFC,所以对这个时间添加了处理函数,那就是OnTimer。就是说,每隔5000ms就会调用OnTimer函数。
SetTimer(NULL, 1, 5000, NULL)
2.也可以通过回调函数来处理,这个回调函数就是你写的timerproc。这时就会每隔5000ms调用timerproc了。
SetTimer(NULL, 1, 5000, timerproc)

KillTimer就是不想定时触发事件了或者说不在需要定时器了,用来删除定时器的
KillTimer(1)就是将标志位1的Timer删除。
追问
我知道在mfc中可以使用,但是在.c中怎么用,在c程序中,不知道怎么使用?
有具体代码么,写一下让我运行看看,谢谢
追答
Timer是要依附与窗口的
SetTimer(HWND hWnd,UINT_PTR nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc)
第一个参数就是所依附的窗口。我想当然的写了个程序,将第一个参数置为NULL,想在程序运行2s后弹出一个对话框,但是运行没有达到预期的效果。具体原因我也不清楚,水平有限,表示关注

#include

void CALLBACK timerProc(HWND, UINT, UINT, DWORD);

void main(void)
{
SetTimer(NULL,1,2000,timerProc);
}

void CALLBACK timerProc(HWND hwnd, UINT a, UINT b, DWORD c)
{
MessageBox(NULL,"TimerEvent","Tip",MB_OK);
KillTimer(NULL,1);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ningmaples
2011-10-12
知道答主
回答量:55
采纳率:0%
帮助的人:26.2万
展开全部
代码全部贴上来,你可以调试下,看出错在哪里
更多追问追答
追问
#include "stdio.h"
#include "time.h"
#include "Windows.h"
int count;
main()
{
UINT_PTR tmp;
tmp = SetTimer(NULL,1,5000,NULL);
}
Ontimer(tmp)
{printf("aaa");
count++;
if(count==3)
killtimer(tmp );
}
我的本意是执行后每5秒输出aaa,可是没有执行。程序中缺少东西,我知道一种添加进程的方法可以使用callback实现,但是 也不是很懂。
追答
1.将回调函数设置为NULL,通过window中捕获WM_TIMER消息来处理。估计你使用的是MFC,所以对这个时间添加了处理函数,那就是OnTimer。就是说,每隔5000ms就会调用OnTimer函数。
SetTimer(NULL, 1, 5000, NULL)
2.也可以通过回调函数来处理,这个回调函数就是你写的timerproc。这时就会每隔5000ms调用timerproc了。
SetTimer(NULL, 1, 5000, timerproc)

KillTimer就是不想定时触发事件了或者说不在需要定时器了,用来删除定时器的
KillTimer(1)就是将标志位1的Timer删除。
SetTimer(NULL, 1, 5000, timerproc)表示定时器标志符为1(当你设置了多个Timer时,用来区别他们),每隔5000ms触发一个Timer事件,timerproc是你设置的回调函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式