我有一个播放视频的应用程序。我正在使用MCI播放视频并将其附加到面板控件。我在主窗体和所有控件上点击了鼠标,但是当我点击播放MCI的视频时,它没有检测到鼠标点击。
如何检测使用MCI命令播放的视频的鼠标点击?
答案 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();
}