LibVlc使用简单方便,Delphi调用其接口播放视频文件或者网络视频(RTSP、RTMP等各种协议),几行代码就搞定了,实在是制作视频播放器的最佳利器。

不过,调用libvlc_media_player_set_display_window设置了播放窗口以后,你会发现窗口无法响应鼠标的消息了,因为VLC接管了该窗口的所有鼠标消息处理。比如,在Panel1里面播放,希望在鼠标单击Panel1的时候做某些处理,然鹅Panel1.OnClick在播放视频时根本不理你,接收不到!

咋办呢?网上有很多人给的方法是修改VLC源码,在源码中把鼠标事件处理的消息回传。这样是可以实现的,不过,编译VLC尤其是win32上的编译,历来是一件让人挠头不止的恐怖事情,VLC的forum上整天都有人咨询关于LibVLC编译的问题,新版本的3.0+版本VLC编译那几乎是没人成功过。。。OMG。。。

其实有个简单的办法可以实现。换个思路。

首先定义一个新的控件:

  TVlcMouseEventWinCtrl = class(TWinControl)privateprocedure WMEraseBkgnd(var msg: TWMEraseBkGnd); message WM_ERASEBKGND;protectedprocedure CreateParams(var params: TCreateParams); override;publicpublishedproperty OnClick;property OnDblClick;property OnMouseDown;property OnMouseMove;property OnMouseUp;end;

然后,把这控件的两个函数完成一下:

procedure TVlcMouseEventWinCtrl.WMEraseBkgnd(var msg: TWMEraseBkGnd);
beginSetBkMode (msg.DC, TRANSPARENT);msg.result := 1;
end;procedure TVlcMouseEventWinCtrl.CreateParams(var params: TCreateParams);
begininherited CreateParams(params);params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
end;

最后,在窗口创建的时候,把这个控件绑定到Panel1上面,搞定!

  FMouseEventWinCtrl := TVlcMouseEventWinCtrl.Create(SELF);Panel1.InsertControl(FMouseEventWinCtrl);FMouseEventWinCtrl.SetBounds(0, 0, Panel1.Width, Panel1.Height);FMouseEventWinCtrl.OnClick         := Panel1Click;FMouseEventWinCtrl.OnMouseMove     := Panel1MouseMove;

看,就是这么简单!

Delphi调用LibVLC播放视频,窗口如何响应键盘鼠标的消息?OnClick、OnDblClick、OnMouseMove相关推荐

  1. java与js交互视频_Android与H5交互—Java调用Js、Js调Java、H5页面调用Android播放视频...

    content="ANZO,GAME,LOL,DNF,DOTA,撸啊撸,地下城与勇士,掌游宝,攻略,宝典,模拟器,加点,战报,英雄,最新,最全,最强,视频"> content ...

  2. c#调用VLC播放视频,rtsp流

    c# 使用VLC播放视频,监控视频 最近公司要做一个监控视频的播放页面,让我用VLC做一个,就再网上找资料,找了很多,大部给的代码都是可以的,但是要学会自己去拼装,好多都是要用积分下载,我也下载了几个 ...

  3. c#winform调用VLC播放视频器控件

    由于项目需求,斯最近遇到一个很麻烦的问题,涉及到视频播放的功能,先前也有使用系统自带的media player来实现播放视频的目的,自带的虽然比较通用,但是问题很大,为什么呢?经常会出现以下↓的框框 ...

  4. Delphi使用PasLibVlc播放视频

    delphi10.2播放视频,使用PasLibVlc_3.0.3.zip第三方控件 第一步安装PasLibVlc_3.0.3.zip 链接:https://pan.baidu.com/s/1xu6Yc ...

  5. pywin32激活指定窗口,模拟键盘鼠标

    import win32guihwnd=win32gui.FindWindow("ChatWnd", "标题") #获取窗口win32gui.SetForegr ...

  6. H5调用Android播放视频

    webView.loadUrl("http://10.0.2.2:8080/assets/RealNetJSCallJavaActivity.htm"); js调用的Java文件中 ...

  7. VLC-基于LIBVLC播放视频

    安装VLC后在安装目录 找到所需要的:sdk 开发使用 :  plugins 运行使用,必须与执行文件在一个目录 还有核心的dll libvlc.dll 和 libvlccore.dll VC 代 ...

  8. flv直播流播放视频,websocket响应造成内存泄漏 浏览器崩溃

    项目现状: 问题:公司做了个监控设备的直播流大屏,技术使用了flv 和websocket,项目写好了,拿到他们那边使用运行了40分钟 浏览器崩溃了,报内存不足 ## 解决思路一:第一个我想到的是flv ...

  9. 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表

    1.首先定义一个类,该类继承与osgGA::GUIEventHandler,在此类中存在一个handle函数,所有的事件都在此函数中进行处理,如下类的代码: //声明类UseEventHandler, ...

最新文章

  1. 让你二十年后仍是人才
  2. 神经网络的输出有方向吗?
  3. Python:列表、集合等交集、并集、差集、非集简介及其代码实现之详细攻略
  4. [ARM异常]-图解armv7/armv8的异常向量表和基地址
  5. 内存的使用和优化的注意事项
  6. 项目如何从 SVN 迁移到 Git
  7. 与时俱进:在JAX-RS API中采用OpenAPI v3.0.0
  8. 如何把UIView转成UIImage,解决模糊失真问题
  9. oracle中scott/tiger、sys、SYSDBA、system都是什么用
  10. mongodb 教程一
  11. 【今日CV 视觉论文速览】30 Nov 2018
  12. StandardWrapper
  13. 湖南大学应用经济学考研考情与难度、参考书及上岸前辈备考经验
  14. [软件工程] 可行性研究
  15. 如何在浏览器中禁用和启用Cookie?
  16. 32单片机与迪文屏通信的开发学习
  17. 面向对象期末第三阶段
  18. 硬件学习_差模与共模
  19. 高并发系统设计:消息队列的三大作用:削峰填谷、异步处理、模块解耦
  20. PHP八字强弱计算,八字强弱的数学计算方法

热门文章

  1. This dependency was not found: * common/stylus/index.styl in ./src/main.js To install it, you can ru
  2. 2023年温州医科大学眼科学考研考情与难度、参考书及上岸前辈经验
  3. Postfix 发送邮件失败问题,求大神
  4. ipad移动售楼系统 全景售楼系统教程
  5. 电子计算机与多媒体教学设计和教案,《电子计算机与多媒体》教学设计
  6. 微点杀毒软件永久有效
  7. 爱奇艺------AI在爱奇艺视频广告中的探索
  8. float的精度和取值范围
  9. 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth
  10. Dapp开发教程二 Asch Dapp Asset