读书人

关于timeSetEvent的回调有关问题

发布时间: 2012-04-02 19:58:59 作者: rapoo

关于timeSetEvent的回调问题
我想用timeSetEvent实现40ms回调一次函数 函数内向串口发送消息 但是回调函数要是静态的话 往函数里写代码全是错误 不是静态的话 timeSetEvent的第三个参数出错 有大虾知道怎么解决么

[解决办法]

探讨
引用:
timeSetEvent第3个是全局的就可以,类似线程起的函数一样,函数里面DWORD_PTR dwUser,可将自己需要的指针传进去,方便调用窗体的成员函数和变量
而且我这么写 会产生error C2061: syntax error : identifier 'DWORD_PTR'这个错误

[解决办法]
如果报下面错误
error LNK2001: unresolved external symbol __imp__timeSetEvent@20

在stdafx.h中增加
#pragma comment(lib,"winmm.lib")
[解决办法]
#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
#include <Mmsystem.h>
#pragma comment(lib, "Winmm.lib")
void WINAPI onTimeFunc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2);
int _tmain(int argc, _TCHAR* argv[])
{
MMRESULT timer_id;
int n = 0;
timer_id = timeSetEvent(5000, 1, (LPTIMECALLBACK)onTimeFunc, DWORD(1), TIME_PERIODIC);
if(NULL == timer_id)
{
printf("timeSetEvent() failed with error %d\n", GetLastError());
return 0;
}
while(n<20)
{
printf("Hello World\n");
Sleep(2000);
n++;
}
timeKillEvent(timer_id); //释放定时器
return 1;
}
void WINAPI onTimeFunc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
printf("time out\n");
return;
}

读书人网 >VC/MFC

热点推荐