MFC CEditView 想过滤掉键盘消息,我的代码如下,但是过滤不掉键盘消息。求助,谢谢
BOOLCMyEditView::PreTranslateMessage(MSG*msg){CEditView::PreTranslateMessage(msg);if(...
BOOL CMyEditView::PreTranslateMessage(MSG* msg)
{
CEditView::PreTranslateMessage(msg);
if(msg->message!=WM_LBUTTONDOWN&&msg->message!=WM_RBUTTONDOWN&&msg->message!=WM_MOUSEMOVE&&
msg->message!=WM_LBUTTONUP&&msg->message!=WM_RBUTTONUP
)
return FALSE;
return TRUE;
} 展开
{
CEditView::PreTranslateMessage(msg);
if(msg->message!=WM_LBUTTONDOWN&&msg->message!=WM_RBUTTONDOWN&&msg->message!=WM_MOUSEMOVE&&
msg->message!=WM_LBUTTONUP&&msg->message!=WM_RBUTTONUP
)
return FALSE;
return TRUE;
} 展开
2个回答
展开全部
首先WM_LBUTTONDOWN ,WM_RBUTTONDOWN ,WM_MOUSEMOVE这几个不是键盘消息是鼠标的消息 所以不能屏敝。。。
你可以这么写:
BOOL CMyEditView::PreTranslateMessage(MSG* msg)
{
CEditView::PreTranslateMessage(msg);
if(msg->message == WM_KEYDOWN)//这个是 要栏截的消息方试 在这里 要栏截键盘的消息则使用WM_KEYDOWN;
{
switch(msg->wParam)//这个才是要栏截的消息 如果不是则改成 msg->lParam
{
case VK_HOME: //要栏截的键盘的虚拟键码 在MSDN 查看更多的 如VK_RETRUN 这个是回车的
//这里是你要执行的代码。
break:
case VK_RETURN:
return false;//直接返回就屏敝了;
break:
还想栏截别的就继续写。。。
}
}
你可以这么写:
BOOL CMyEditView::PreTranslateMessage(MSG* msg)
{
CEditView::PreTranslateMessage(msg);
if(msg->message == WM_KEYDOWN)//这个是 要栏截的消息方试 在这里 要栏截键盘的消息则使用WM_KEYDOWN;
{
switch(msg->wParam)//这个才是要栏截的消息 如果不是则改成 msg->lParam
{
case VK_HOME: //要栏截的键盘的虚拟键码 在MSDN 查看更多的 如VK_RETRUN 这个是回车的
//这里是你要执行的代码。
break:
case VK_RETURN:
return false;//直接返回就屏敝了;
break:
还想栏截别的就继续写。。。
}
}
更多追问追答
追问
BOOL CMyEditView::PreTranslateMessage(MSG* msg)
{
CEditView::PreTranslateMessage(msg);
if(msg->message == WM_KEYDOWN||msg->message == WM_KEYDOWN||msg->message == WM_CHAR)
{
switch(msg->wParam)
default:
return FALSE;
}
return TRUE;
}
是wparam,但是我按照你的修改了下,还是不能屏蔽键盘消息,你能在帮我看看吗
追答
你这个用的什么东西啊 没这么用的
你想屏敝键盘的什么消息?
你会用switch语句不?
{
switch(msg->wParam)
default:
return FALSE;
}
return TRUE;
}
假设你想屏敝WM_CHAR消息 这个就不用那么费事 直接重载该消息然返回就屏敝了。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询