完全透明窗口鼠标穿透问题

baishui2014 2015-09-12 09:23:07
写了一个播放器(对话框A播放),要实现在视频播放的时候能在上面随意划线,我用一个透明的对话框B来专门实现划线功能,这样既能播放视频又能在上面画线。

遇到一个问题:为了完全不影响播放画面,我将B设为了完全透明的窗口,但是B设为完全透明之后就无法响应鼠标事件了,即所谓的鼠标穿透。

目前我的解决方法是:
重载A的鼠标事件,判断鼠标位置如果落在B的客户区里,就将鼠标的坐标转换成B客户区的坐标,调用B的鼠标事件,这样就能解决鼠标穿透的问题了,从而实现了实时划线,又不影响视频播放质量。

请问一下关于鼠标穿透这个问题,有没有其他更简便的方法呢?

...全文
736 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2016-01-23
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复多日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
jacky_qiu 2015-09-14
  • 打赏
  • 举报
回复
你这个思路已经很好了!这个功能的代码应该很少很容易啊!
weiym 2015-09-14
  • 打赏
  • 举报
回复
http://www.cppblog.com/weiym/archive/2014/09/22/208379.html
gz_qmc 2015-09-14
  • 打赏
  • 举报
回复
将B接收到的鼠标消息转发给A, OVER
baishui2014 2015-09-13
  • 打赏
  • 举报
回复
谢谢,但我的意思是要B窗口完全透明,但它又不被穿透
dustpg 2015-09-13
  • 打赏
  • 举报
回复
CreateWindowEx, EX风格使用WS_EX_NOREDIRECTIONBITMAP, 不知道这个至少需要多少, 没在Win7上用过,我用这个配合Win8的DirectComposition的
dustpg 2015-09-12
  • 打赏
  • 举报
回复
每次鼠标移动(HOOK或者每隔一段时间(等待垂直同步)读取RAW Input), 检查鼠标位置.在需要穿透的地方临时设置为透明窗口, 否则设置为普通窗口

15,979

社区成员

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

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