MFC当鼠标在非活动视图上移动时,该视图如何响应该消息

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:53:38
在一个SDI程序中创建一个静态拆分窗口,左边的视图类型为CTreeView,右边为自定义的一个View,每当鼠标进入右边的视图并产生WM_MOUSEMOVE时,要实时在状态栏显示鼠标的坐标。
但是当右边的视图不是活动视图时,无法收到WM_MOUSEMOVE消息,必须要点一下右边的视图,才能够实时更新状态栏的信息。
我想当右边的视图不是活动视图时,也能更新状态栏,于是重载了主框架的OnCmdMsg,这样可以达到目的,但是发现菜单和工具栏的按钮变灰了,比如打开、新建、工具栏、状态栏等按钮都是灰色,不可用。
请问大家,有什么解决的方法吗?谢谢
已经弄好了,先让框架处理非与右边视图有关的命令,再让视图处理自己的命令,即框架处理在前,但放过视图的命令消息。
原因是:实际上右边的非活动视图是可以收到MouseMove消息的,只是它的状态栏更新消息被框架的OnCmdMsg截获了,所以,视图可以处理MouseMove,但不能更新状态栏。经过上面的处理,就可搞定了。

记得是基于窗口消息的 如果非激活的话 应该接收不到mousemove
用全局钩子可以解决问题 但不知道是不是有点太过了 可能还有其他方式可以

你重载过后要调用基类的OnCmdMsg函数.