wpf 中AxShockwaveFlash重写以及屏蔽鼠标右键

来源:互联网 发布:手绘地图制作软件 编辑:程序博客网 时间:2024/06/05 18:36

在wpf中需要用到flash播放swf或者图片,需要使用

AxShockwaveFlashObjects.dll和ShockwaveFlashObjects.dll

在项目中使用的时候遇到

问题1.使用WindowsFormsHost总是置顶的问题,到目前为止没有很好的解决

问题2.就是AxShockwaveFlash取消鼠标右键

屏蔽掉flash右键方法:

重写AxShockwaveFlash

 public partial class MyShockwaveFlash : AxShockwaveFlash    {        public event MouseEventHandler MouseRightDown;        public delegate void MouseEventHandler(object sender, System.Windows.Forms.MouseEventArgs e);        private const int WM_LBUTTONDOWN = 0x0201;        private const int WM_RBUTTONDOWN = 0x0204;        protected override void WndProc(ref Message m)        {            switch (m.Msg)            {                case WM_RBUTTONDOWN:                    Int16 x = (Int16)m.LParam;                    Int16 y = (Int16)((int)m.LParam >> 16);                    MouseRightDown(this, new System.Windows.Forms.MouseEventArgs(System.Windows.Forms.MouseButtons.Right, 1, x, y, 0));                    break;            }            if (m.Msg == WM_RBUTTONDOWN)            {                return;            }            base.WndProc(ref m);        }    }

然后使用方法如下:


private void MediaElementControl()        {            FlashPlayer = new MyShockwaveFlash();            wfhFlash.Child = FlashPlayer;            FlashPlayer.Movie = AppDomain.CurrentDomain.BaseDirectory + "main.swf";            FlashPlayer.MouseRightDown += new MyShockwaveFlash.MouseEventHandler(FlashPlayer_MouseRightDown);        }        void FlashPlayer_MouseRightDown(object sender, System.Windows.Forms.MouseEventArgs e)        {            //这里您可以加入自己的处理或者其他您想处理的代码//System.Windows.MessageBox.Show("asfasdfasdf");            return;        }

最后问题2 顺利得以解决,但是对于问题1目前还没有找到很好的解决方法,哪位朋友如果有解决方法或者思路欢迎讨论交流或者留言均可,谢谢。

0 0
原创粉丝点击