KeyboardProc()这个函数里的内容如下:
if(nCode>=0)
{
if(wParam==VK_HOME)
{
CDialogDll dlg; //创建一个自己的对话框
dlg.DoModal() //这里是显示出来.
}
} LRESULT RetVal=CallNextHookEx(g_hHook,nCode,wParam,lParam);
return RetVal;
不知道为什么每次按HOME键的时候,都会弹出两个对话框来
狂急,,,,谢谢高手回答。。附;VC QQ技术群:5478989
if(nCode>=0)
{
if(wParam==VK_HOME)
{
CDialogDll dlg; //创建一个自己的对话框
dlg.DoModal() //这里是显示出来.
}
} LRESULT RetVal=CallNextHookEx(g_hHook,nCode,wParam,lParam);
return RetVal;
不知道为什么每次按HOME键的时候,都会弹出两个对话框来
狂急,,,,谢谢高手回答。。附;VC QQ技术群:5478989
我现在的解决办法是在dlg.DoModal()前加上一个if语句判断是否已经有了弹出窗口。
但问题怎么会出现到现在还不清楚
用WH_GETMESSAGE消息钩子把,他没有这个问题的, 我就是这样做的
键盘钩子接受键盘信号有两个,一个是KEYDOWN,一个是KEYUP,你只判断if(wParam==VK_HOME),当你按下HOME键时,键盘函数自然会响应两次!当然会弹出两个对话框!
改成:
BOOL bKeyUp = lParam & (1 << 31);//这是响应WM_KEYUPR的。
if(wParam==VK_HOME && bKeyUp)
问题解决。
接分。
{
//代表按下某键
}
{
//代表按下某键
}