Вляпался в ещё один глюк.
Настраиваю окно вывода видео так:
public bool ConfigureVideoOutput()
{
if (OutputWindow == null || basicVideo == null || basicVideo.GetVideoSize(out _videoWidth, out _videoHeight) != S_OK)
{
return false;
}
videoWindow.put_Owner(OutputWindow.Handle);
videoWindow.put_WindowStyle(WindowStyle.Child | WindowStyle.ClipChildren | WindowStyle.ClipSiblings);
videoWindow.put_MessageDrain(OutputWindow.Handle);
Rectangle r = CenterRect(ResizeRect(new Rectangle(0, 0, _videoWidth, _videoHeight), OutputWindow.Size), OutputWindow.ClientRectangle);
SetScreenRect(r);
videoWindow.put_Visible(OABool.True);
return true;
}
OutputWindow
это Panel
. put_MessageDrain(OutputWindow.Handle)
означает, что панель будет принимать события мыши, приходящие в окно с видео. Однако, MouseDoubleClick
(может еще что-то) не приходит. Что сделать, чтобы приходил?
Здесь пишут, что это зависит от рендерера. Но я перепробовал все рендереры и нифига.
А тут DirectShow .NET / Discussion / Open Discussion: Get mouse events from IVideoWindow oject? пишут, что
You will only get MouseDown and MouseUp events from MessageDrain. If you need click and double click events then you will have to write your own methods to detect them.
но как? Это получается, создавать наследника от Panel
и там извращаться с отловом двойного MouseDown
? В принципе, не сложно, но может нормальный способ есть?