Я, наконец, получил его работу, создав безграничную форму, которую я передаю в ручку mci-видео. Я установил форму TransparencyKey в backcolor. таким образом, видео по-прежнему отображается, но щелчки мыши передаются через основную форму.
Я устанавливаю размер и расположение формы из главной формы, потому что по какой-то причине он не будет работать, устанавливая их в том виде, в котором я до сих пор пытаюсь понять, почему
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();
}
Если вы прикрепляете что-то к панели управления, как насчет обработки кликов от этого? Элементы управления пользовательского интерфейса должны иметь возможность обрабатывать клики. – techvice
По какой-то причине это не сработает. это первая вещь, которую я пробовал, передавая дескриптор панелей на видео mci, имея эти щелчки мыши на панели и добавляя их к элементам основных форм. щелчки мыши проходят через всю форму и нажимают на все, что находится за формой. основная форма никогда не ловит щелчки мыши – iedoc