Delphi调用LibVLC播放视频,窗口如何响应键盘鼠标的消息?OnClick、OnDblClick、OnMouseMove
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相关推荐
- java与js交互视频_Android与H5交互—Java调用Js、Js调Java、H5页面调用Android播放视频...
content="ANZO,GAME,LOL,DNF,DOTA,撸啊撸,地下城与勇士,掌游宝,攻略,宝典,模拟器,加点,战报,英雄,最新,最全,最强,视频"> content ...
- c#调用VLC播放视频,rtsp流
c# 使用VLC播放视频,监控视频 最近公司要做一个监控视频的播放页面,让我用VLC做一个,就再网上找资料,找了很多,大部给的代码都是可以的,但是要学会自己去拼装,好多都是要用积分下载,我也下载了几个 ...
- c#winform调用VLC播放视频器控件
由于项目需求,斯最近遇到一个很麻烦的问题,涉及到视频播放的功能,先前也有使用系统自带的media player来实现播放视频的目的,自带的虽然比较通用,但是问题很大,为什么呢?经常会出现以下↓的框框 ...
- Delphi使用PasLibVlc播放视频
delphi10.2播放视频,使用PasLibVlc_3.0.3.zip第三方控件 第一步安装PasLibVlc_3.0.3.zip 链接:https://pan.baidu.com/s/1xu6Yc ...
- pywin32激活指定窗口,模拟键盘鼠标
import win32guihwnd=win32gui.FindWindow("ChatWnd", "标题") #获取窗口win32gui.SetForegr ...
- H5调用Android播放视频
webView.loadUrl("http://10.0.2.2:8080/assets/RealNetJSCallJavaActivity.htm"); js调用的Java文件中 ...
- VLC-基于LIBVLC播放视频
安装VLC后在安装目录 找到所需要的:sdk 开发使用 : plugins 运行使用,必须与执行文件在一个目录 还有核心的dll libvlc.dll 和 libvlccore.dll VC 代 ...
- flv直播流播放视频,websocket响应造成内存泄漏 浏览器崩溃
项目现状: 问题:公司做了个监控设备的直播流大屏,技术使用了flv 和websocket,项目写好了,拿到他们那边使用运行了40分钟 浏览器崩溃了,报内存不足 ## 解决思路一:第一个我想到的是flv ...
- 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表
1.首先定义一个类,该类继承与osgGA::GUIEventHandler,在此类中存在一个handle函数,所有的事件都在此函数中进行处理,如下类的代码: //声明类UseEventHandler, ...
最新文章
- 让你二十年后仍是人才
- 神经网络的输出有方向吗?
- Python:列表、集合等交集、并集、差集、非集简介及其代码实现之详细攻略
- [ARM异常]-图解armv7/armv8的异常向量表和基地址
- 内存的使用和优化的注意事项
- 项目如何从 SVN 迁移到 Git
- 与时俱进:在JAX-RS API中采用OpenAPI v3.0.0
- 如何把UIView转成UIImage,解决模糊失真问题
- oracle中scott/tiger、sys、SYSDBA、system都是什么用
- mongodb 教程一
- 【今日CV 视觉论文速览】30 Nov 2018
- StandardWrapper
- 湖南大学应用经济学考研考情与难度、参考书及上岸前辈备考经验
- [软件工程] 可行性研究
- 如何在浏览器中禁用和启用Cookie?
- 32单片机与迪文屏通信的开发学习
- 面向对象期末第三阶段
- 硬件学习_差模与共模
- 高并发系统设计:消息队列的三大作用:削峰填谷、异步处理、模块解耦
- PHP八字强弱计算,八字强弱的数学计算方法
热门文章
- This dependency was not found: * common/stylus/index.styl in ./src/main.js To install it, you can ru
- 2023年温州医科大学眼科学考研考情与难度、参考书及上岸前辈经验
- Postfix 发送邮件失败问题,求大神
- ipad移动售楼系统 全景售楼系统教程
- 电子计算机与多媒体教学设计和教案,《电子计算机与多媒体》教学设计
- 微点杀毒软件永久有效
- 爱奇艺------AI在爱奇艺视频广告中的探索
- float的精度和取值范围
- 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth
- Dapp开发教程二 Asch Dapp Asset