Обнаружение щелчков мышью по видео, воспроизводимому с помощью команд MCI

У меня есть приложение, которое воспроизводит видео. Я использую MCI для воспроизведения видео и прикрепить его к панели управления. Я ловлю щелчки мышью на главной форме и всех элементах управления, но когда я нажимаю на видео, воспроизводимое с помощью MCI, оно не обнаруживает щелчки мышью.

Как вы можете обнаружить щелчки мыши на видео, воспроизводимом с помощью команд MCI?

1 ответ

Наконец-то я заработал, создав форму без полей, которую я передаю в качестве дескриптора для видео 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();
    }
Другие вопросы по тегам