2016-09-25 174 views
0

所以我试图让一个消息框出现,当用户按下他/她的键盘上的按钮使用钩子。KeyboardProc回调函数没有被调用?

由于没有错误,所以钩子得到正确安装,但好像KeyboardProc回调函数没有被调用,因为当它被调用时应该显示的消息框永远不会显示。

有没有错误顺便说一句,显示出来,我在桌面应用程序中编程。

下面是关于钩和回调函数的代码:

LRESULT CALLBACK KeyboardProc(
int nCode, WPARAM keyState, LPARAM keyInfo) { 
    LRESULT reValue = 0; 
    MessageBox(hWnd, L"Testing", L"Test", MB_OK);//This is the msg box that isnt showing up 
    if (nCode < 0) { 
     reValue = CallNextHookEx(keyboardHook, nCode, keyState, keyInfo); 
    } 


    return reValue; 
}; 

keyboardHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, hInstance, 0); 
+0

你正在运行一个消息循环? – 1201ProgramAlarm

+0

我不需要吗?如果是这样的话我该怎么做 – sharpchain

回答

1

你需要运行一个消息循环处理呼叫。从KeyboardProc callback function的描述中可以看出:“调用是通过向安装了钩子的线程发送消息来完成的,因此,安装该钩子的线程必须有消息循环。”

+0

如何让消息循环?就像ik如何制作一个循环一样,但是我在里面放了什么? – sharpchain

+0

Nvm我想出了谢谢你的帮助! – sharpchain