子框架捕获不了左键消息WM_LBUTTONUP

xhubobo 2012-07-10 01:22:04
如题,在子框架以外其它地方点击按钮就可以响应WM_LBUTTONUP,请高手指点,谢谢!
代码如下:

BOOL CTestChildFrm::PreTranslateMessage(MSG* pMsg)
{
BOOL bHnd = FALSE;
UINT msg = pMsg->message;

switch(msg)
{
case WM_LBUTTONUP: //鼠标左键弹起
{
AfxMessageBox("WM_LBUTTONUP");
}
break;

default:
break;
}

return bHnd ? bHnd : CMDIChildWnd::PreTranslateMessage(pMsg);
}
...全文
213 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhubobo 2012-07-16
  • 打赏
  • 举报
回复
2楼、5楼说的够详细了,结贴
xhubobo 2012-07-11
  • 打赏
  • 举报
回复
我是在响应WM_LBUTTONUP的时候进行ReleaseCapture的
xhubobo 2012-07-11
  • 打赏
  • 举报
回复
但是如果不能够捕获WM_LBUTTONUP消息,就没有办法ReleaseCapture啊,因为程序不知道何时释放鼠标焦点
schlafenhamster 2012-07-11
  • 打赏
  • 举报
回复
对象进行拖拽时,那个窗口一般会SetCapture。
以后WM_LBUTTONUP只能到那个窗口,你一定要让那个窗口ReleaseCapture拖动就会失败
xhubobo 2012-07-11
  • 打赏
  • 举报
回复
不是的,是Codejock中对CXTPReportControl子类对象进行拖拽的,在CTestChildFrm::PreTranslateMessage中捕获不了WM_LBUTTONUP消息,
但是能够捕获WM_MOUSEMOVE消息
傻X 2012-07-11
  • 打赏
  • 举报
回复
个人认为你触发的是DROPEFFECT拖拽事件,与WM_LBUTTONUP无关啊。
始终认为WM_LBUTTONDOWN和WM_LBUTTONUP绑在一起的。
xhubobo 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
拖拽时鼠标被捕获了
[/Quote]应该是吧,如何解决呢?
schlafenhamster 2012-07-10
  • 打赏
  • 举报
回复
拖拽时鼠标被捕获了
xhubobo 2012-07-10
  • 打赏
  • 举报
回复
但是在报表拖拽完成以后,鼠标左键弹起却没有触发WM_LBUTTONUP消息,重新单击可以触发WM_LBUTTONUP消息,这又是怎么回事?
xhubobo 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
被视图类给载住了,这时你应该响应视类的WM_LBUTTONUP消息,除非你有特殊需要才要响应框架的这个消息,如果这样,你就得在视类这个消息函数里再向框类发送这个WM_LBUTTONUP消息,这样框类才能响应这个消息
[/Quote]谢谢,确实是对话框将左键弹起消息屏蔽了,然后依次向上传递到视图类、子框架类就可以了。
hdg3707 2012-07-10
  • 打赏
  • 举报
回复
被视图类给载住了,这时你应该响应视类的WM_LBUTTONUP消息,除非你有特殊需要才要响应框架的这个消息,如果这样,你就得在视类这个消息函数里再向框类发送这个WM_LBUTTONUP消息,这样框类才能响应这个消息
xhubobo 2012-07-10
  • 打赏
  • 举报
回复
在子框架中有2个视图类和一个分个视图类,是不是消息被什么控件或者视图、对话框给屏蔽了?

15,980

社区成员

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

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