关于SetTimer这个win API函数的问题
vhua 2004-08-31 04:49:37 我被要求编写一个函数,目的是设置一个timer,函数体实现如下
long regTimerFunc(unsigned long dur,timer_proc func)
{
return SetTimer(0,0,dur,func);
}
timer_proc是一种自定义的类型。为了实现这种类型满足SetTimer的参数要求,特做如下typedef
typedef void CALLBACK (*timer_cb_proc)(long a,long b);
结果编译出错。错误类型是诸如“mising ;”,"missing ;"等。
难道是func的类型不满足要求?然后我按TimerProc的要求如下定义
typedef void CALLBACK (*timer_cb_proc)(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime);
结果还是报错。我感觉自己对SetTimer函数和WIN API还是不够熟悉,请教一下众位高手,我如何才能让一个任意类型的函数满足SetTimer的参数要求,成为timer处理函数呢?
前提:不允许强制类型转换,即
long regTimerFunc(unsigned long dur,timer_proc func)
{
return SetTimer(0,0,dur,(TIMERPROC)func);
}
因为这样可能破坏堆栈。程序将来会在单片机上跑的。