我在类成员函数中调用了::SetTimer(GetHWND(),1,1000,TimerProc);
编译的时候就提示如下错误:
error C2664: 'SetTimer' : cannot convert parameter 4 from 'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)' to 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned
long)'
None of the functions with this name in scope match the target type
仔细看了一下TimerProc回调函数发现把void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);写到了类中,即变成了成员函数,那么编译器就会报错。
解决方法:
1.可以把void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);放到类外部。
2.如果void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);在类中需要加 static 即:
static void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);