一个SetTimer函数回调函数的问题
VOID CALLBACK TimeProc1(HWND hwnd, UINT uMsg, UINT_PTR idEvent,
DWORD dwTime)
{
::AfxMessageBox("SDGsdfg");
}
VOID CALLBACK CTestTimer::TimeProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent,
DWORD dwTime)
{
char buf[32]; sprintf(buf, "%d", m_timer);
::AfxMessageBox(buf);
}
int CTestTimer::Execute()
{
m_timer = SetTimer(NULL, 0, 3000, TimeProc);//这句编译出错
m_timer = SetTimer(NULL, 0, 3000, TimeProc1);//这句可以通过
return 0;
}
在编译出错的那句 使用强制转换也通不过,错误提示是:
不能将'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)' 转换为:
'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'
可是TimeProc这个成员方法明明就是__stdcall的调用方式啊!
这种方式在C++Builder下面编译可以通过,请高手给一个解决方案,谢谢