您的位置:程序门 -> vc/mfc -> 界面



部分消息不能传递的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


部分消息不能传递的问题[无满意答案结贴,结贴人:ivy1023]
发表于:2007-10-21 21:25:11 楼主
我在一个对话资源模板框上有一个静态文本控件,在该对话框类中,我对该静态文本控件创建了一个控制变量,其类型是自己派生的cstatic类,我想在这个派生类中对鼠标滑轮滚动消息进行处理,也就是说我想对这个静态文本控件的鼠标滑轮滚动消息进行处理,发现这消息根本就传不到这个控件上,但是我用spy查找发现,部分鼠标消息,比如鼠标move,点击的消息都传到该静态文本控件上了,而wm_mouse_wheel根本就没有收到。

我想问,windows机制本来就是这样的吗?有没有办法让该静态文本控件收到这条消息?
提前感谢!
发表于:2007-10-21 21:41:521楼 得分:0
应该是没输入焦点的原因,   自己可以在父窗体转发过去
发表于:2007-10-21 21:42:052楼 得分:0
在其父窗体中的pretranslatemsg函数中调用static类的相应处理函数。认为的先处理你的想要的消息,因为父窗口可以接受到消息。
发表于:2007-10-22 11:00:083楼 得分:0
"应该是没输入焦点的原因,   自己可以在父窗体转发过去",   不是这样的,部分消息是可以收到的,比如鼠标移动,鼠标左键双击,单击,   只是鼠标滑轮滚动收不到.
我后来查了,该消息传到对话框中去了.
发表于:2007-10-22 11:03:134楼 得分:0
静态控件有wheel消息吗?
发表于:2007-10-22 11:15:475楼 得分:0
看看父窗口有没有,没有就查一下getsystemmetrics(sm_mousewheelpresent);
发表于:2007-10-22 11:20:006楼 得分:0
能通过向导映射wheel消息.
所以cwnd的派生类都可以影射这条消息.
发表于:2007-10-22 11:41:447楼 得分:0
现在我能解决这个问题了,但是感觉比较绕.

这条消息传到对话框窗口中了,只能在对话框窗口中处理,要是能在子窗口中处理更好.


快速检索

最新资讯
热门点击