How to Hook Mouse Event in C++ Builder Application using Windows Mouse Hook API Function?
我在C Builder中钩住鼠标事件时遇到问题,它显示错误:
1 2 3 | [bcc32 Error] MainUnit.cpp(24): E2034 Cannot convert 'long * (__stdcall * (_closure )(int,unsigned int,long))(int,unsigned int,long)' to 'long (__stdcall *)(int,unsigned int,long)' Full parser context MainUnit.cpp(22): parsing: void TInputHookMain::SetHook()`. |
并且:
1 2 3 | [bcc32 Error] MainUnit.cpp(24): E2342 Type mismatch in parameter 'lpfn' (wanted 'long (__stdcall *)(int,unsigned int,long)', got 'void') Full parser context MainUnit.cpp(22): parsing: void TInputHookMain::SetHook()`. |
这是我主要单元中的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | HHOOK mouseHook; void TInputHookMain::ReleaseHook() { UnhookWindowsHookEx(mouseHook); } void TInputHookMain::SetHook() { if ( !(mouseHook = SetWindowsHookExW(WH_MOUSE_LL, MouseInputHook, NULL, 0)) ) { ShowMessage("Failed To Install Mouse Hook!"); } } LRESULT __stdcall TInputHookMain::MouseInputHook(int nCode, WPARAM MsgID, LPARAM Data) { if ( nCode >= 0 ) { switch ( MsgID ) { case WM_LBUTTONDOWN: ShowMessage("Left Mouse Button Clicked!"); break; case WM_RBUTTONDOWN: ShowMessage("Right Mouse Button Clicked!"); break; } } return CallNextHookEx(mouseHook, nCode, MsgID, Data); } |
可悲的是,我找不到问题的根源。我尝试逐步按照C教程进行操作,但到目前为止还没有运气。
该错误消息表示: