Обнаружение щелчков мышью по видео, воспроизводимому с помощью команд 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();
}