回调函数必须是静态函数或全局函数。 1 .如果你把它定义为类的成员函数,则应该在声明的时候加上static。 如:static LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam); 而且在函数的实现部分,即.cpp文件中,函数名前面应加上类名。 如:LRESULT CALLBACK CSettingDlg::MouseProc(int nCode, WPARAM wParam, LPARAM lParam) { return 1; } 函数的调用语句示例如下:SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId()); 2.如果你把回调函数定义为全局函数 则只要把函数实现部分放在调用之前即可。头文件中不需要声明。函数名前没有类名。 如: / /函数现实部分 LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam){return 1;} / /调用函数void CSettingDlg::OnStart() { SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());}

评论