MFC IVideoWindow put_FullScreenMode 工作不正确

MFC IVideoWindow put_FullScreenMode works incorrectly

所以我有下一个问题: 我有两台显示器,并在其中一台(次要)上从网络摄像头进行视频翻译。我在全屏模式下使用 put_FullScreenMode().

它工作正常,但是当我在主监视器区域上单击任何鼠标按钮时,window 视频转换换行到 window 模式。 如何保存使用主显示器的全屏模式?

首先,我将我的视频向左移动(在主监视器上的辅助监视器上)并使用全屏模式。

    if(monitors.GetCount() > 1)
        gx.pVW->put_Left(primaryRect.right);

        gx.pVW->put_FullScreenMode(OATRUE);
        gx.pVW->put_Visible(OATRUE);

感谢您的宝贵时间。

[许多] 较旧的应用程序利用了 FullScreenMode,因为 API 提供了一个特定的 "full screen renderer" 过滤器,可以有效地处理全屏显示。从那时起,视频适配器找到了拉伸呈现视频的方式,全屏模式变得不必要了。与 windowless 相比,视频渲染器的窗口模式(您正在使用)也不是推荐模式。

您最好直接在 UI、window 表单或对话框中以 windowless 模式使用渲染器。使用无边框 window 托管视频渲染器,您可以轻松模拟全屏模式,而无需实际更改显示模式。这样 window 保持正常 window 并且不需要从全屏返回到另一个 UI activity,例如这样发生在另一台显示器上。

VMR 过滤器本身在其过滤器配置 属性 页面中展示了两种进入全屏的方式:

Set Fullscreen 按照您的方式进行操作并遇到上述问题。另一种方法是使用无边框 window 拉伸到显示器范围的全屏模式。

另见相关讨论: