为什么PreTranslateMessage函数不响应了?

marb 2003-09-18 11:04:43
我的ActiveX控件中的PreTranslateMessage函数在控件位置变化后就不能响应了,用鼠标点击控件使控件激活函数也会不响应。请问这是什么原因造成的?如何让PreTranslateMessage能重新响应消息。先谢谢各位大侠了!
...全文
612 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
marb 2003-09-19
  • 打赏
  • 举报
回复
我用了一个不怎么好的方法,就是在让控件上的窗体被激活时向控件发送WM_PARENTNOTIFY消息激活控件,这时PretranslateMessage消息就好用了。感谢各位的帮助,此问题已结贴。至于为什么不好用我再仔细琢磨琢磨,那位大侠要是知道答案了,如能给我发Email,我将不胜感激!
marb 2003-09-18
  • 打赏
  • 举报
回复
实际上我的控件上还有一个窗体(覆盖整个控件),所有的键盘和鼠标消息都被这个窗体截获(即Keydown和Mouse消息都好用),但PretranslateMessage函数则是控件能响应而上面的窗体不能响应。于是我就在控件的PretranslateMessage函数中显示调用了窗体的PretranslateMessage函数。当我执行全屏操作时,通知控件父窗体重新设置控件的大小和位置,这是还是好用的,但当我恢复正常显示时,控件的PretranslateMessage函数就不响应了。
marb 2003-09-18
  • 打赏
  • 举报
回复
yushulei我按照你的方法做了,还是不好使。我发现将鼠标点在窗体中的其他控件上后,再点击我的控件,这时消息就能响应了,这是为什么?
wuxfBrave 2003-09-18
  • 打赏
  • 举报
回复
ActiveX控件在鼠标点击之前,PretranslateMessage进不去的,难道仅仅是位置变化造成的?
奇怪了,观察此时鼠标消息映射函数还能进去吗?
yushulei 2003-09-18
  • 打赏
  • 举报
回复
在最后添上
SendMessage (pMsg->message, pMsg->wParam, pMsg->lParam);
return TRUE;
就行了。
vcforever 2003-09-18
  • 打赏
  • 举报
回复
是不是你在处理消息的时候什么地方阻塞了!
消息无法继续传送了!
yushulei 2003-09-18
  • 打赏
  • 举报
回复
我正做一个表格控件,原来也是用PretranslateMessage来截获KEYDOWN消息的,
本来他也是只第一次响应,第二次就被控件所在的窗体截获,而控件就不会响应了。
但我添加了SendMessage (pMsg->message, pMsg->wParam, pMsg->lParam);
return TRUE;后就好了,不知道你的是为什么!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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