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);
在线等。。。。
高手来帮下忙,谢谢 展开
简单的 说明下
(1)
UINT_PTR tmp;
tmp = SetTimer(NULL,1,5000,NULL);
Ontimer(tmp)
{printf("aaa");
}
(2)SetTimer(NULL,1,5000,timerproc);
在线等。。。。
高手来帮下忙,谢谢 展开
2个回答
展开全部
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删除。
有两种处理方式:
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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码全部贴上来,你可以调试下,看出错在哪里
更多追问追答
追问
#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是你设置的回调函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询