MFC对话框不响应键盘消息。 20
在VC中,为了响应键盘消息,我在对话框中添加了PreTranslateMessage,通过判断键值来确定是哪个键按下。这些功能都已经实现了。另外,在对话框中还有些Butt...
在VC中,为了响应键盘消息,我在对话框中添加了PreTranslateMessage,通过判断键值来确定是哪个键按下。这些功能都已经实现了。
另外,在对话框中还有些Buttons,是需要用鼠标操作的,在用鼠标和键盘交替操作的过程中,发现对话框不再响应键盘了。
请问这是为什么?
UpdateData();
if (pMsg->message==WM_KEYDOWN)
{
if (pMsg->wParam==VK_F12)
{
GT_AbptStp(AXIS);
}
if(pMsg->wParam=='P')
CPro2Dlg::OnPause();
if (KeyLock==FALSE)
{
switch(pMsg->wParam)
{
case 'F':
if (m_fileopne.IsWindowEnabled())
CPro2Dlg::OnFileOpen();
break;
case 'S':
if(m_run.IsWindowEnabled())
CPro2Dlg::OnRun();
break;
case 'Z':
if(m_zero.IsWindowEnabled())
CPro2Dlg::OnZeroPos();
break;
default:
break;
}
}
}
if (pMsg->message == WM_KEYUP)
{
if (KeyUpLock==TRUE)
{
if ((pMsg->wParam=='K')||(pMsg->wParam=='L'))
{
GT_SmthStp(AXIS);
GT_Update(AXIS);
}
KeyUpLock=FALSE;
}
}
return CDialog::PreTranslateMessage(pMsg);
谢谢
——————————
应该不是,当不响应键盘时,连ESC键都没有了,所以不应该是那个KeyLock的事。 展开
另外,在对话框中还有些Buttons,是需要用鼠标操作的,在用鼠标和键盘交替操作的过程中,发现对话框不再响应键盘了。
请问这是为什么?
UpdateData();
if (pMsg->message==WM_KEYDOWN)
{
if (pMsg->wParam==VK_F12)
{
GT_AbptStp(AXIS);
}
if(pMsg->wParam=='P')
CPro2Dlg::OnPause();
if (KeyLock==FALSE)
{
switch(pMsg->wParam)
{
case 'F':
if (m_fileopne.IsWindowEnabled())
CPro2Dlg::OnFileOpen();
break;
case 'S':
if(m_run.IsWindowEnabled())
CPro2Dlg::OnRun();
break;
case 'Z':
if(m_zero.IsWindowEnabled())
CPro2Dlg::OnZeroPos();
break;
default:
break;
}
}
}
if (pMsg->message == WM_KEYUP)
{
if (KeyUpLock==TRUE)
{
if ((pMsg->wParam=='K')||(pMsg->wParam=='L'))
{
GT_SmthStp(AXIS);
GT_Update(AXIS);
}
KeyUpLock=FALSE;
}
}
return CDialog::PreTranslateMessage(pMsg);
谢谢
——————————
应该不是,当不响应键盘时,连ESC键都没有了,所以不应该是那个KeyLock的事。 展开
展开全部
如果你想让整个对话框接隐指收字符拆拿应旅携搭该响应PreTranslateMessage( MSG* pMsg );当pMsg->message==WM_CHAR时进行你的工作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对吵运清话框中升前把 ID为IDCANCEL的按钮悄卜Disable属性设置为TRUE时,对话框将不相应ESC按键.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询