关于在MFC里利用HOOK捕获键盘消息的问题

如题我在单文档利用在VIEW类重载CInputinput;HHOOKhook;intCString_textView::OnCreate(LPCREATESTRUCTlp... 如题我在单文档利用在VIEW类重载
CInput input;
HHOOK hook;
int CString_textView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
int CString_textView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
hook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
// TODO: 在此添加您专用的创建代码

return 0;
}
}
LRESULT CALLBACK KeyboardProc(
__in int code,
__in WPARAM wParam,
__in LPARAM lParam
)
{
if(wParam==VK_F2)
{
input.Create(IDD_INPUT);
input.ShowWindow(SW_SHOW);
if(input.m_hWnd)
return 1;
return 1;
}
else return CallNextHookEx(hook,WH_KEYBOARD,wParam,lParam);
}
我现在在主窗口按F2可以看到对话框,但是马上就弹出错误,
请问怎么处理?
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
凭康适Bc
2014-03-26 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:115万
展开全部
点"重试"看断点在哪,再分析问题
追问
在void AFXAPI AfxHookWindowCreate(CWnd* pWnd)里的ASSERT(pWnd->m_hWnd == NULL);这里触发了断点
追答
你按F2是两个HOOk消息,一个按下的,一个是抬起的,可能是重复input.Create(IDD_INPUT);引起的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式