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;
}
展开
 我来答
xiao19890303
2013-04-14 · TA获得超过561个赞
知道小有建树答主
回答量:508
采纳率:0%
帮助的人:293万
展开全部
首先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||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消息 这个就不用那么费事 直接重载该消息然返回就屏敝了。。。
jellycgl
2013-04-14 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:878万
展开全部
CEditView::PreTranslateMessage(msg);

把这句话放在
return FALSE;

后面试试呢
追问
不行,还是能接到键盘消息
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式