博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VLC 修改源码,添加对鼠标事件的响应
阅读量:5263 次
发布时间:2019-06-14

本文共 1189 字,大约阅读时间需要 3 分钟。

参考文章: 

补充说明:经测试,在调用修改后的dll时,要在 vlc上覆盖以透明层(如panel),才可以监视到鼠标的消息。

 在使用过程中libvlc创建出来渲染窗口消息在内部捕获并进行处理,外部的window 无法收到消息,如双击,单击事件,这样就给使用者带来了很多不方便的地方.官网论坛有人说要想捕获鼠标消息要钩子.开始用钩子成功捕获了,但是钩子必须是全局的很不方便.

后来在网上看到了有人修改源码:修改文件module/video_output/DirectX/events.c 把WM_RBUTTONUP等消息在视频窗体上把该消息再转发一次,

            {

            POINT pt;
            pt.x = GET_X_LPARAM(msg.lParam);
            pt.y = GET_Y_LPARAM(msg.lParam);
            ClientToScreen(msg.hwnd, &pt);//把子窗体鼠标坐标转换为屏幕坐标
            ScreenToClient(p_event->p_vout->p_sys->hparent, &pt);//在把屏幕坐标转换为父窗体鼠标坐标
            PostMessage(p_event->p_vout->p_sys->hparent, WM_RBUTTONUP, msg.wParam, MAKELPARAM(pt.x, pt.y));//给父窗体发送该消息,并附带鼠标坐标值
            }

按照上面的修改重新编译vlc-1.0.1把生成dll替换plugins里的就可以;

vlc-1.1.5源码变了很多所以修改变为:

/modules/video_output/msw/events.c中

 

case WM_LBUTTONDOWN:

            MousePressed( p_event, msg.hwnd, MOUSE_BUTTON_LEFT );

             //modify

            {

           POINT pt;

           pt.x = GET_X_LPARAM(msg.lParam);

           pt.y = GET_Y_LPARAM(msg.lParam);

           ClientToScreen(msg.hwnd,&pt);

           ScreenToClient(vd->sys->hparent,&pt);

           PostMessage(vd->sys->hparent,WM_LBUTTONDOWN,msg.wParam,MAKELPARAM(pt.x,pt.y));

            }

            break;

修改后libvlc的父窗口可以收到WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK,WM_MBUTTONDOWN,WM_RBUTTONDOWN,WM_RBUTTONUP消息.

转载于:https://www.cnblogs.com/fightLonely/archive/2012/05/16/2504246.html

你可能感兴趣的文章
C# GC 垃圾回收机制
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>