SetTimer、killtimer、ontimer函数在.c 中如何使用,使用win32中接口,也可以
答案:2 悬赏:10 手机版
解决时间 2021-03-24 16:11
- 提问者网友:我一贱你就笑
- 2021-03-24 05:46
SetTimer、killtimer、ontimer函数在.c 中如何使用,使用win32中接口,也可以
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-03-24 07:13
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);
}
有两种处理方式:
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);
}
全部回答
- 1楼网友:迟山
- 2021-03-24 07:42
代码全部贴上来,你可以调试下,看出错在哪里追问#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是你设置的回调函数。追问现在 我在 。c中想用,所以 mfc中东西我用不成,通过window中捕获WM_TIMER消息来处理。具体怎么操作了,能发个代码上来么?谢谢追答直接调用ondraw()..................
#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是你设置的回调函数。追问现在 我在 。c中想用,所以 mfc中东西我用不成,通过window中捕获WM_TIMER消息来处理。具体怎么操作了,能发个代码上来么?谢谢追答直接调用ondraw()..................
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯