检测用MCI命令播放的视频的鼠标点击

时间:2014-11-21 04:28:37

标签: c# mci

我有一个播放视频的应用程序。我正在使用MCI播放视频并将其附加到面板控件。我在主窗体和所有控件上点击了鼠标,但是当我点击播放MCI的视频时,它没有检测到鼠标点击。

如何检测使用MCI命令播放的视频的鼠标点击?

1 个答案:

答案 0 :(得分:0)

我终于通过创建一个无边框表单来工作,我将其传递给mci视频的句柄。我将表单TransparencyKey设置为背景颜色。这样,视频仍会显示,但鼠标点击会通过主窗体传递。

我是从主表单设置表单的大小和位置,因为出于某种原因,它不会通过从表单内部设置来完成工作,我仍然试图理解为什么

    public VideoForm()
    {
        this.FormBorderStyle = FormBorderStyle.None;
        this.TransparencyKey = Color.White;
        this.TopMost = true;
    }

    public void PlayVideo(int width, int height, ScreenControl control)
    {
        string mciCommand = string.Format("open \"{0}\" Type mpegvideo alias {1} parent {2} style child", control.Location(), control.Name, this.Handle.ToString());
        int error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero);

        mciCommand = string.Format("put {0} window at 0 0 {1} {2}", control.Name, width, height);
        error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero);

        mciCommand = string.Format("seek {0} to 0", control.Name);
        error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero);

        mciCommand = string.Format("play {0} repeat", control.Name);
        error = WinApi.mciSendString(mciCommand, null, 0, IntPtr.Zero);

        this.Show();
    }