我在一个对话框类中定义了一个变量m_hook;
并且在该对话框的OnInitDialog中
m_hook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());进行赋值。
钩子函数:
LRESULT CALLBACK CHookDlg::KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_SPACE == wParam)
return CallNextHookEx(m_hHook1,code,wParam,lParam);
else
return 1;
}
我将KeyboardProc声明为类的static成员函数。编译后会报错:
G:\VCproject\Hook\HookDlg.cpp(193) : error C2597: illegal reference to data member 'HookDlg::m_hHook1' in a static member function
这是什么原因?改成全局变量可以通过。
并且在该对话框的OnInitDialog中
m_hook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());进行赋值。
钩子函数:
LRESULT CALLBACK CHookDlg::KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_SPACE == wParam)
return CallNextHookEx(m_hHook1,code,wParam,lParam);
else
return 1;
}
我将KeyboardProc声明为类的static成员函数。编译后会报错:
G:\VCproject\Hook\HookDlg.cpp(193) : error C2597: illegal reference to data member 'HookDlg::m_hHook1' in a static member function
这是什么原因?改成全局变量可以通过。
CallNextHookEx(m_hHook1,code,wParam,lParam);
----------->
CallNextHookEx(NULL,code,wParam,lParam);