如何让视图类不接收鼠标消息?

liumenghappy 2009-11-20 10:34:58
有两个视图类CViewA和CViewB,CViewA在CViewB上面,如果我在CViewA上左击鼠标,那么这个鼠标左键按下消息肯定是被CViewA截获,现在的问题是:如果我在CViewA上左击鼠标,怎样让CViewA下面的CViewB来处理这个消息?
...全文
411 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aurorachenqi77 2011-04-10
  • 打赏
  • 举报
回复
晕,加了这个之后A里的滚动条用不了了,怎么回事儿?
liumenghappy 2010-01-13
  • 打赏
  • 举报
回复
已经搞定,谢谢大家的帮助,现在结贴给分!
av007007 2010-01-12
  • 打赏
  • 举报
回复
up
liumenghappy 2010-01-12
  • 打赏
  • 举报
回复
好,我试试
奔跑哥 2010-01-12
  • 打赏
  • 举报
回复
学习了。就是说每次都是这个方法PreTranslateMessage先对消息进行一下处理,不错,mfc确实提供了很多对消息处理的机制。
苏克贝塔03 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 lllyyy2403 的回复:]
引用 32 楼 liumenghappy 的回复:
引用 29 楼 xwsn007 的回复:
引用 4 楼 ezhuyin 的回复:
重载A的PreTranslateMessage函数,截获鼠标消息,发送给B,并返回TRUE,其他消息不处理,并返回FALSE


完全同意!
能给个小例子吗?

BOOL CViewA::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN)
SendMessage(VIEWB的handle, WM_LBUTTONDOWN, (WPARAM) 0, (LPARAM) 0);
return FALSE;
}
[/Quote]


这个差不多!!
bragi523 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 lllyyy2403 的回复:]

BOOL CViewA::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN)
PostMessage(VIEWB的handle, WM_LBUTTONDOWN, (WPARAM) 0, (LPARAM) 0);
return FALSE;
}
[/Quote]

这样就可以
lllyyy2403 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 liumenghappy 的回复:]
引用 29 楼 xwsn007 的回复:
引用 4 楼 ezhuyin 的回复:
重载A的PreTranslateMessage函数,截获鼠标消息,发送给B,并返回TRUE,其他消息不处理,并返回FALSE


完全同意!
能给个小例子吗?
[/Quote]
BOOL CViewA::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN)
SendMessage(VIEWB的handle, WM_LBUTTONDOWN, (WPARAM) 0, (LPARAM) 0);
return FALSE;
}
gotooker 2010-01-07
  • 打赏
  • 举报
回复
两个VIEW重叠一起的?不知道你这样做的目的是什么,视图中互相传递消息我觉得还是通过FRMWnd中转比较好些,视图视图直接发消息的话大概也要通过FRMWND获取另外的视图的句柄吧。
oldn123 2010-01-07
  • 打赏
  • 举报
回复
不过这个在mainfrm里来处理显然不太和适,处理viewB中的PreTranslateMessage就可以。
oldn123 2010-01-07
  • 打赏
  • 举报
回复
刚试了下,在mainfrm里的PreTranslateMessage中是可以响应到view的lbuttondowm消息的,view中的子窗口也没问题,基于mdi试的
liumenghappy 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 liumenghappy 的回复:]
引用 24 楼 lklwlklw 的回复:
重载PreTranslateMessage函数
我在Frame里重载PreTranslateMessage,根本没用啊
[/Quote]
鼠标消息不是命令消息,Frame根本截获不了啊
liumenghappy 2009-12-29
  • 打赏
  • 举报
回复
自己顶!
liumenghappy 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 xwsn007 的回复:]
引用 4 楼 ezhuyin 的回复:
重载A的PreTranslateMessage函数,截获鼠标消息,发送给B,并返回TRUE,其他消息不处理,并返回FALSE


完全同意!
[/Quote]能给个小例子吗?
youyou6115 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ezhuyin 的回复:]
重载A的PreTranslateMessage函数,截获鼠标消息,发送给B,并返回TRUE,其他消息不处理,并返回FALSE
[/Quote]
我赞成这个方法
xwsn007 2009-11-24
  • 打赏
  • 举报
回复
转发给b时,最好用PostMessage()
xwsn007 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ezhuyin 的回复:]
重载A的PreTranslateMessage函数,截获鼠标消息,发送给B,并返回TRUE,其他消息不处理,并返回FALSE
[/Quote]

完全同意!
liumenghappy 2009-11-24
  • 打赏
  • 举报
回复
顶起来
lklwlklw 2009-11-23
  • 打赏
  • 举报
回复
重载PreTranslateMessage函数
liumenghappy 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 successqigao 的回复:]
建议你去vckbase的系统中间找找相关的源代码,很多的。
[/Quote]找了一下,好像没有啊
加载更多回复(25)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧